ユーザーの入力を受け取り、それをリストに入れようとしています。私は実用的なバージョンを持っていますが、それは冗長であるように感じます(最初のブロックは余分なようですが、取り除くと機能しません)。どのような方法でこれを改善することができますか? おかげユーザーをリストに入力してください
pastChoice()
私はゲームを作っていると私は、彼らがすでに作られたものな選択肢をユーザーに示したいと思います。
Ex。型 '歴史' あなたは[ 'A'、 'A'、 'C'、 'B']
ユーザーの入力を受け取り、それをリストに入れようとしています。私は実用的なバージョンを持っていますが、それは冗長であるように感じます(最初のブロックは余分なようですが、取り除くと機能しません)。どのような方法でこれを改善することができますか? おかげユーザーをリストに入力してください
pastChoice()
私はゲームを作っていると私は、彼らがすでに作られたものな選択肢をユーザーに示したいと思います。
Ex。型 '歴史' あなたは[ 'A'、 'A'、 'C'、 'B']
私はこのコードのためのあなたの意図についてはよく分からないが、これはほぼ同じです:
def pastChoice():
prevMove = []
while True:
choice = raw_input("> ")
prevMove.append(choice)
print prevMove
pastChoice()
ブロック:
choice = raw_input("> ")
prevMove = []
prevMove.append(choice)
ので、入力をユーザに要求し、prevMoveに追加しループの開始時に条件i in prevMove
がprevMove
の最初の要素にi
と評価された場合、2番目のブロックでprevMove
に新しい要素が追加されるため、新しく追加された要素ループは終了しません。
for
ループを維持すると、最初のブロックを削除すると、prevMove
の要素が存在しないため、反復処理が行われないため、機能しません。
ありがとう、これは私にとって本当に明確なものです。 – Tarrant
+1とうまくいった例と教授法 –
前の選択肢に
を見たい場合は、このようにそれを行うことができますか?あなたがこれをやろうとしている本当の理由はわかりませんが、ユーザーの入力を受け入れてリストに追加するとうまくいきます。
def main():
prevMove = []
choice = ''
def getHistory():
print prevMove
while True:
choice = raw_input("> ")
if choice == '':
break
prevMove.append(choice)
# do whatever you want with the input here
# a call to history
getHistory()
if __name__ == "__main__":
main()
EDIT:
により質問の編集に、コードは現在、イベントの履歴を記録し、それらを取得する機能を持つことになります。
'while choice!= '':'の代わりに 'while choice:'と言うことができます。そうすれば、choiceを 'choice = None'に初期化することができます – juliomalegria
@ julio.alegria how so?それはwhileループをスキップしただけです。 – Serdalis
あなたはループ状態(そのことについて申し訳ありません)については正しいですが、それでもなお、最初のヒントは便利です:) – juliomalegria
あなたが与えたコードで何をしようとしているのか分かりません。達成しようとしていることの例を挙げることができますか? –
'prevMove'の長さは常に1になるでしょう、あなたはそれを知っていますよね? – juliomalegria
私はそれが決して終わらないことを知っていたが、私はどのように知りませんでした。ありがとうございました。 – Tarrant