我无法打破这个 while 循环

I can't break this while loop

我有一个作业需要完成一个动作,直到输入为 'quit'、'Quit'、'q' 或 'Q'。我一直在尝试这个:

while variable != 'quit' or 'Quit' or 'q' or 'Q':
    # do stuff

但是,当输入这些字符串中的任何一个时,while 循环仍然会执行!我试过其他方法,比如 if 语句,但它只是超时。我怎样才能正确地打破循环?

试试这个:

 while (variable != "quit" and variable != "q"  and variable != "Q" and variable != "Quit"):

你不能做变量 != "q" 或 "Q" 等等

要走的路大概是这样的:

while str(variable).upper() not in ['QUIT', 'Q']:

这样,您可以在一个地方列出所有允许用户退出的值,并且忽略大小写(大写或小写)。

如果我没有理解错的话,你会看到类似下面的内容:

while variable != 'quit' or 'Quit' or 'q' or 'Q':
    # do stuff
    variable = input("")

(顺便说一句 - 欢迎来到 Stack Overflow!正如另一位用户在评论中提到的那样 - 请提供代码示例;这将帮助潜在的回答者真正知道出了什么问题以及你想做什么。)

之所以它永远不会中断是因为 Python 解释器实际看到的是:

while (variable != 'quit') or ('Quit') or ('q') or ('Q'):
    # do stuff
    variable = input("")

在 Python 中,非空字符串将计算为真 - 如果您在 Python 解释器中尝试 bool('q'),您将得到 True。这意味着解释器是 运行:

while (variable != 'quit') or True or True or True:
    # do stuff
    variable = input("")

这显然永远不会中断。您需要做的是检查所有选项; Kind Stranger 有一个解决方案,但更明确地说,您可以尝试

while variable not in ('quit', 'Quit', 'q', 'Q'):