在python中使用while循环的多个条件

时间:2014-02-06 21:00:58

标签: python

我是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: ")

任何帮助都会很棒。谢谢你提前。

3 个答案:

答案 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':
    ....