While循环不会结束python

时间:2018-12-08 18:48:36

标签: python

功能选项完成后,即使更新与要求的字符串之一相同,while循环仍然继续。满足更新条件后如何停止while循环

while update.lower() != "tests" or "lessons" or "adjust":
     update = input("Do you want to update content from 'lessons' or 'tests'. Or do you want to 'adjust' what you aren't confident with. respond with 'adjust' 'lesson' or 'tests'").lower()

     if update.lower() == "tests" or "lessons" or "adjust":
         options()

2 个答案:

答案 0 :(得分:4)

您需要

while update.lower() not in ["tests", "lessons", "adjust"]

您写的内容被解析为

{update.lower() != "tests"} OR {"lessons"} OR {"adjust"}

(方括号位于其中,以显示语言如何对术语进行分组)

由非空字符串组成的条件在python中始终为true,因此“课程”部分将始终为true,而while循环将永远为true。

答案 1 :(得分:2)

这是因为代码中的ctrl + .不能像您认为的那样起作用,因此在您的示例中,它们被解释为不同的条件orupdate.lower() != "tests"lessons因此最后两个始终被视为adjust,因此此循环永远不会结束。相反,您应该这样做:

True