我是Python的新手,已经开始制作一些有趣的小游戏来记住它是如何工作的。我遇到过一个我希望在while循环中使用多个条件的区域,并且无法确定如何执行此操作。我在这里看到一些人用数字等做这件事,但是我使用的是字母,我没做什么或搜索似乎工作。这是我到目前为止所得到的。这个想法是这个人选择A或B(小写或大写),如果他们不选择,它会再次循环回输入。
ANS = input("\tA/B: ")
if ANS == "A":
print("They beat you up and stole all of your stuff. You should have run away.")
del BAG[:]
print("You now have", len(BAG), "items in your bag.")
elif ANS == "a":
print("They beat you up and stole all of your stuff. You should have run away.")
del BAG[:]
print("You now have", len(BAG), "items in your bag.")
elif ANS == "B":
print("You got away but they stole something from you.")
ran_item = random.choice(BAG)
BAG.remove(ran_item)
print("You now have", len(BAG), "items in your bag")
print("They are:", BAG)
elif ANS == "b":
print("You got away but they stole something from you.")
ran_item = random.choice(BAG)
BAG.remove(ran_item)
print("You now have", len(BAG), "items in your bag")
print("They are:", BAG)
while ANS != "A" or "a" or "B" or "b":
print("You must make a choice...")
ANS = input("\tA/B: ")
任何帮助都会很棒。谢谢你提前。
答案 0 :(得分:3)
while ANS not in ['A', 'a', 'B', 'b']:
print...
或更一般地
while ANS != 'A' and ANS != 'a' and ...
答案 1 :(得分:2)
你的while循环的条件正由Python解释如下:
while (ANS != "A") or ("a") or ("B") or ("b"):
此外,它始终会评估为True
,因为非空字符串始终评估为True
。
要解决此问题,您可以改为使用not in
:
while ANS not in ("A", "a", "B", "b"):
not in
将测试是否可以在元组ANS
中找到("A", "a", "B", "b")
。
您可能还希望在此使用str.lower
来缩短元组的长度:
while ANS.lower() not in ("a", "b"):
答案 2 :(得分:0)
在这种情况下,我能想到的最简单的方法是:
while ANS[0].lower() not in 'ab':
....