我不能打破这个while循环

时间:2019-09-30 00:25:27

标签: python variable-assignment

我有一个作业,需要完成一个动作,直到输入为“退出”,“退出”,“ q”或“ Q”。我一直在尝试:

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

无论何时输入这些字符串中的任何一个,while循环仍然执行!我尝试了其他方式,例如if语句,但它只是超时。如何正确打破循环?

3 个答案:

答案 0 :(得分:1)

要走的路大概是这样的:

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

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

答案 1 :(得分:1)

如果我正确地理解了这一点,那么您将看到以下内容:

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中,非空字符串的计算结果为true-如果您在Python解释器中尝试bool('q'),则会得到True。这意味着解释器正在运行:

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

显然不会中断。您需要做的是检查所有选项。善良的陌生人有一个解决方案,但更明确地,您可以尝试

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

答案 2 :(得分:0)

尝试一下:

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

您不能执行变量!=“ q”或“ Q”等。