在Python中退出while循环

时间:2018-09-26 23:54:52

标签: python while-loop

这是我有疑问的代码:

isPet_list_elem = input("Pet?: ").lower()

# check if the input is either y or n
while isPet_list_elem != "y" or isPet_list_elem != "n":
    print("Please enter either 'y' or 'n'.")
    isPet_list_elem = input("Pet?: ").lower()

我一直认为,当我输入“ y”或“ n”时,循环将结束,但是即使输入y或n之后,循环仍会继续询问我另一个输入。

我尝试使用其他while循环执行相同操作,但结果相同。我该怎么做才能避免此错误?

5 个答案:

答案 0 :(得分:2)

这是德莫根定律。

您可以说:

while isPet_list_elem != "y" and isPet_list_elem != "n"

while not (isPet_list_elem == "y" or isPet_list_elem == "n")

答案 1 :(得分:1)

您可以执行此操作,这将中断yn的循环

while isPet_list_elem not in ('y','n'):

答案 2 :(得分:0)

您使用了错误的逻辑。当您使用代码输入yn时,循环开始处的条件显示为True,因此它将继续执行。将其更改为and语句,然后输入yn,条件将为False

isPet_list_elem = input("Pet?: ").lower()

# check if the input is either y or n
while isPet_list_elem != "y" and isPet_list_elem != "n":
    print("Please enter either 'y' or 'n'.")
    isPet_list_elem = input("Pet?: ").lower()

答案 3 :(得分:0)

如果输入“ y”,则isPet_list_elem != "n"为真;如果输入“ n”,则isPet_list_elem != "y"为true。并且您在代码中使用了or,因此,如果一个expressin为true,则整个语句将为true。

您可以改用以下代码:

while isPet_list_elem != "y" and isPet_list_elem != "n"

答案 4 :(得分:0)

在while循环中包含以下内容:

    if isPet_list_elem == "y" or isPet_list_elem == "n":
            break