为什么在我的 while 循环中包含 "c" 的变量不等于 "c"?尝试在输入匹配时中断

Why does variable containing "c" not equal "c" in my while loop? Trying to break when an input matches

我正在尝试使用在此代码之前启动的计数来实施评分系统。但是,我想一直检查输入,直到用户输入正确的获胜者。如果他们第一次输入 Adam、Bill 或 Draw,程序会跳过我的 while 循环。但是,如果他们输入的选项不在这里,比如 "Caroline",我就会陷入 while 循环的无限循环(即使我在进入 while 循环后输入了正确的答案)。

一旦我因为初始失败进入 while 循环,即使我输入 "adam",我也会收到打印错误,我不确定为什么,因为 gameLower 应该 == "adam" .我错过了什么?

game = input("Who won, Adam or Bill, or a draw (enter D for draw): ")
gameLower = game.lower()
print(gameLower)

while gameLower != "adam" or gameLower != "bill" or gameLower != "d":
    print("Sorry, I didn't understand who the winner was. Adam, Bill or a draw (D)?")
    game = input("Who won, Adam or Bill, or a draw (enter D for draw): ")
    gameLower = game.lower()
else:
    break

你的循环条件是一个重言式,一个无论变量值如何,真值总是true的表达式。您需要使用 and 而不是 or

gameLower value| != "adam" | != "bill" | != "d" | OR'ed | AND'ed
---------------+-----------+-----------+--------+-------+-------
"adam"         |  false    | true      | true   | true  | false
"bill"         |  true     | false     | true   | true  | false
"d"            |  true     | true      | false  | true  | false
"other value"  |  true     | true      | true   | true  | true

我的朋友。 首先,您需要在 while 条件下使用 AND 而不是 OR,但通常,您必须使用另一种方式,就像我想告诉您的那样: 因为您想一遍又一遍地检查用户的答案,直到他输入正确的参数,所以您必须使用无穷无尽的 WHILE(例如:WHILE(1) ),而在您的 while 中,您必须使用 IF 和 ELSE 条件!在您的 IF 中,您必须将此条件(您现在的 WHILE 中的条件)与 AND 一起使用!在你的 IF 结束时你必须使用 CONTINUE,在你的 ELSE 结束时你必须使用 BREAK 从你的 WHILE 中跳出!如果您需要更多帮助,请告诉我为您编写并发送至此处。