-1

Python 3.2 のプログラムの一部として、一種の質問シーケンスを作成しています。基本的に、私は質問をして、2 つの可能性の間の答えを待ちます。与えられた答えが 2 つの選択肢の一部でない場合は、行を印刷して、正しい入力が与えられるまで質問を再質問し、次の質問に進んで同じシーケンスを繰り返します。

これは、自分自身をよりよく説明するためのコードのスニペットです。

colour = input("black or white?")
if colour in ["black", "white"]:
    print("Thank you")
else:
    print("Please choose one or the other")

つまり、与えられた答えが黒か白でない場合は、「どちらかを選んでください」と出力して、黒か白かを指定しない限り、質問を再質問したいと思います。黒または白が与えられたら、同じ方法で別の質問をすることができるように、if ステートメントから抜け出させたいと思います。

これを行う方法を検索しましたが、有用なものは見つかりませんでした。私はwhileループを推測していますが、試してみると、最後の印刷文字列が無限に吐き出されます。

4

2 に答える 2

6
while True:
  colour = input("black or white? ")
  if colour in ("black", "white"):
    print("Thank you")
    break
  else:
    print("Please choose one or the other")

コードの大部分を保持し、それを無限ループでラップし、入力が探しているものになったらコードから抜け出します。

選択肢は変更されないため、メンバーシップのテストではaのtuple代わりにを使用することに注意してくださいlist。つまり、不変でありin ("black", "white")、これを明示的にします。

于 2012-05-28T02:22:06.427 に答える
5
colour = None
while not colour in ["black", "white"]:
    colour = input("black or white?")

print("Thank you")

または、派手になりたい場合

colour = input("black or white?")
while not colour in ["black", "white"]:
    print("Please choose one or the other")
    colour = input("black or white?")

print("Thank you")
于 2012-05-28T02:18:57.257 に答える