-1

我正在构建一种问题序列,作为 Python 3.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")

保留大部分代码,将其包装在无限循环中,并在输入是您要查找的内容时将其中断。

请注意,成员资格测试使用 atuple而不是 a,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 回答