2011-12-02 18 views
0

ユーザーの入力を受け取り、それをリストに入れようとしています。私は実用的なバージョンを持っていますが、それは冗長であるように感じます(最初のブロックは余分なようですが、取り除くと機能しません)。どのような方法でこれを改善することができますか? おかげユーザーをリストに入力してください

pastChoice()

私はゲームを作っていると私は、彼らがすでに作られたものな選択肢をユーザーに示したいと思います。

Ex。型 '歴史' あなたは[ 'A'、 'A'、 'C​​'、 'B']

+2

あなたが与えたコードで何をしようとしているのか分かりません。達成しようとしていることの例を挙げることができますか? –

+0

'prevMove'の長さは常に1になるでしょう、あなたはそれを知っていますよね? – juliomalegria

+0

私はそれが決して終わらないことを知っていたが、私はどのように知りませんでした。ありがとうございました。 – Tarrant

答えて

1

私はこのコードのためのあなたの意図についてはよく分からないが、これはほぼ同じです:

def pastChoice(): 
    prevMove = [] 

    while True: 
     choice = raw_input("> ") 
     prevMove.append(choice) 
     print prevMove 
pastChoice() 

ブロック:

choice = raw_input("> ") 
prevMove = [] 
prevMove.append(choice) 

ので、入力をユーザに要求し、prevMoveに追加しループの開始時に条件i in prevMoveprevMoveの最初の要素にiと評価された場合、2番目のブロックでprevMoveに新しい要素が追加されるため、新しく追加された要素ループは終了しません。

forループを維持すると、最初のブロックを削除すると、prevMoveの要素が存在しないため、反復処理が行われないため、機能しません。

+0

ありがとう、これは私にとって本当に明確なものです。 – Tarrant

+1

+1とうまくいった例と教授法 –

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:

により質問の編集に、コードは現在、イベントの履歴を記録し、それらを取得する機能を持つことになります。

+1

'while choice!= '':'の代わりに 'while choice:'と言うことができます。そうすれば、choiceを 'choice = None'に初期化することができます – juliomalegria

+2

@ julio.alegria how so?それはwhileループをスキップしただけです。 – Serdalis

+0

あなたはループ状態(そのことについて申し訳ありません)については正しいですが、それでもなお、最初のヒントは便利です:) – juliomalegria

関連する問題