1

これはおそらく知っておくべきことだと思いますが、今は思いつきません。リストの名前が関数で指定された引数であるリストを作成する関数を取得しようとしています。

例えば

def make_hand(deck, handname):
    handname = []
    for c in range(5):
        handname.append(deck.pop())
    return handname

    # deck being a list containing all the cards in a deck of cards earlier

問題は、ハンドを作成するときにユーザーがハンドネームとして入力したものと呼ばれるようにしたいときに、ハンドネームと呼ばれるリストを作成することです。

誰でも助けることができますか?ありがとう

4

2 に答える 2

6

キーが手の名前で、値がリストである辞書を保持できます。

次に、dictionary [handname]と言うだけで、特定の手にアクセスできます。の線に沿って:

hands = {} # Create a new dictionary to hold the hands.
hands["flush"] = make_hand(deck) # Generate some hands using your function.
hands["straight"] = make_hand(deck) # Generate another hand with a different name.
print hands["flush"] # Access the hand later.
于 2009-02-01T15:55:08.717 に答える
2

実行時に任意の名前の変数を作成することはできますが、exec(sykoraが提案したように)を使用して、またはlocalsglobalsまたはsetattrオブジェクトをいじることによって、あなたの質問はやや議論の余地があります。

オブジェクト(整数から1000のメンバーを持つクラスまで、ほぼすべて)は単なるメモリのチャンクです。名前はなく、任意の数名前を付けることができ、すべての名前は同等に扱われます。オブジェクトへの参照を導入し、それが収集されないようにするだけです。

プログラムのユーザーがオブジェクトにユーザーに表示される名前を付けるという意味でアイテムに名前を付けたい場合は、名前が関連付けられたオブジェクトに辞書を使用する必要があります。

ユーザー指定の変数名のアプローチには、他にもいくつかの重大な影響があります。*ユーザーが既存の変数の名前を指定した場合はどうなりますか?*ユーザーが無効な名前を指定した場合はどうなりますか?

リークのある抽象化を導入しているので、ユーザーが新しい変数名を指定できることがプログラムの目的にとって本当に重要でない限り、ユーザーはオブジェクトの格納方法について心配する必要はありません-表示されません一見奇妙な制限があります。

于 2009-02-01T16:05:21.427 に答える