我不能打破这个循环

2024-04-19 13:37:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个作业,我需要完成一个动作,直到输入是'quit'、'quit'、'q'或'q'。我试过这个:

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

但是,当这些字符串中的任何一个被输入时,while循环仍然执行!我也尝试过其他方法,比如if语句,但它只是超时了。如何正确地打破循环?你知道吗


Tags: or方法字符串if作业语句variabledo
3条回答

试试这个:

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

你不能这么做!=“q”或“q”等

如果我理解正确的话,你会得到如下结果:

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

(顺便说一下-欢迎使用堆栈溢出!正如另一位用户在评论中所提到的,请提供一个代码示例;它将帮助潜在的回答者真正了解出了什么问题,以及您正在尝试做什么。)

它从不中断的原因是因为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("")

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

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

方法可能是这样的:

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

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

相关问题 更多 >