这是我有疑问的代码:
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循环执行相同操作,但结果相同。我该怎么做才能避免此错误?
答案 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)
您可以执行此操作,这将中断y
或n
的循环
while isPet_list_elem not in ('y','n'):
答案 2 :(得分:0)
您使用了错误的逻辑。当您使用代码输入y
或n
时,循环开始处的条件显示为True
,因此它将继续执行。将其更改为and
语句,然后输入y
或n
,条件将为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