Python冒险游戏->在while循环中选择A或B不起作用!
我正在用Python创建一个简单的冒险游戏。现在我需要问用户他们想选择选项A还是B,所以我用一个循环来实现这个功能:
AB = input("A or B?")
while AB != "A" or "a" or "B" or "b":
input("Choose either A or B")
if AB == "A" or "a":
print("A")
elif AB == "B" or "b":
print("B")
问题是,不管你输入什么,都会出现“选择A或B”的问题。我哪里出错了呢?
6 个回答
2
AB != "A" or "a" or "B" or "b"
被理解为
(AB != "A") or ("a") or ("B") or ("b")
而且因为 "a"
总是 true
,所以这个检查的结果总是 true
。
3
这段代码的意思是,原来的写法 AB != "A" or "a" or "B" or "b"
是不对的。正确的写法应该是 AB.upper() not in ('A','B')
。
简单来说,第一行代码试图检查变量 AB
的值是否不等于 "A"、"a"、"B" 或 "b"。但是这样写会导致一些问题,因为它并没有正确地比较每一个值。
而第二行代码则是把 AB
的值转换成大写字母,然后检查这个大写字母是否不在 ('A', 'B') 这个列表里。如果不在,就说明 AB
的值不是 "A" 或 "B"。
这样写更清晰,也能避免错误。
5
你的 while
语句是在检查条件 or
,而你提供的字符串总是会让这个条件成立,也就是说它总是为真。
while AB != "A" or "a" or "B" or "b":
这意味着:
while (AB != "A") or "a" or "B" or "b":
非空字符串总是被认为是真,所以写 or "B"
这个条件总是成立,程序会一直要求输入。更好的写法是:
while AB.lower() not in ('a','b'):