0

だから私は2つのリストを持っています。2 番目のリストには、最初のリストよりも多くの要素があります。ユーザーに2番目のリストの余分な要素から要素の1つを選択してもらいたいのですが、これらの要素の名前は非常に長いため、名前を入力する代わりに、リスト内の必要な要素を選択してもらいたいと思いますリスト内の位置に基づいています。

これは私がこれまでに持っているコードです

ListZero = ["One", "Two", "Three", "Four"]
ListOne = ["One", "Two", "Three", "Four", "Five", "Six", "Seven"]
numberOfNew = -(len(ListOne) - len(ListZero))
Name = raw_input("Please choose which number you wish to use: %s \nYour choice is: " % (", ").join(ListOne[numberOfNew:]))
if Name not in (ListOne[numberOfNew:]):
    print "Error"
else:
    print Name

Example output:
Please choose which number you wish to use: Five, Six, Seven 
Your choice is: Seven
Seven

これにより、2 番目のリストに新しい要素が出力され、ユーザーがそれらの要素の 1 つをパラメーター「名前」に割り当てることができるようになります。

しかし、実際のコードのリスト要素ははるかに長くなるため、ユーザーがリスト内の要素の位置を入力して、その方法で「名前」属性に割り当てることができるようにしたいと考えています。

Example output:
Please choose which number you wish to use: Five[5], Six[6], Seven[7] 
Your choice is: 7
Seven

これを行う方法はありますか?助けていただければ幸いです。

ありがとうございました。

4

2 に答える 2

2

私はあなたの問題を少しずつ分解します -

余分な要素にはセットを使用します。

>>> set(ListOne) - set(ListZero)
set(['Seven', 'Six', 'Five'])

>>> Excess = list(set(ListOne)-set(ListZero))
['Seven', 'Six', 'Five']

ユーザー入力を受け入れる場合:

>>> ExcessList = ["{0} [{1}]".format(name, index) for index, name in enumerate(Excess,1)]
['Seven [1]', 'Six [2]', 'Five [3]']

>>> Name = raw_input("Please choose which number you wish to use: {} \n".format(', '.join(ExcessList)))

使用する番号を選択してください: セブン [1]、シックス [2]、ファイブ [3]

ユーザー入力の処理:

try:
    Selected = Excess[int(Name)-1]
    print "Your choice is: {}".format(Selected)
Except: 
    print "Invalid input"

1 を入力すると:

あなたの選択は: 7

これらのビットを実際のプログラムに結合するのはあなたに任せます! Python のドキュメントをよく読む必要がありenumerateます。listset

于 2012-10-19T09:03:45.093 に答える
0

どうですか

index = raw_input()
index = int(index)

あなたの選択は ListOne[index-1] です

于 2012-10-19T09:02:25.460 に答える