def main ():
x = input("print data? (Y/N) ")
while (x != 'Y' or x != 'N'):
x = input("error: wrong input. Please put Y or N only ")
if x == 'Y':
read_serial()
尝试检查键盘输入(x)是否等于' Y'或者' N'串。如果没有,则循环继续,直到它。但是上面的代码似乎编译并运行正常,除了无论循环如何继续运行。没有多少Python 3的经验,所以任何人都可以告诉我我做错了什么?
答案 0 :(得分:2)
将or
更改为and
,因为您要检查它是否与这些字段中的任何一个不相等。如果您想使用or
,则必须将代码更改为
def main ():
user_input = input("print data? (Y/N) ")
while (true):
if (user_input.lower() == 'y' or user_input.lower() == 'n'):
break
user_input = input("error: wrong input. Please put Y or N only ")
if user_input.lower() == 'y':
read_serial()
旁注:x
是一个糟糕的变量名称,称之为更合适。
当案例无关紧要时,在比较字符串时,应始终将案例更改为更低。在这种情况下,情况无关紧要,请使用lower()
def main ():
user_input = input("print data? (Y/N) ")
while (user_input.lower() != 'y' and user_input.lower() != 'n'):
user_input = input("error: wrong input. Please put Y or N only ")
if user_input.lower() == 'y':
read_serial()
答案 1 :(得分:1)
本声明
x != 'Y' or x != 'N'
总是True
,因为世界上的一切都不是“Y”而不是“N”。
将其更改为:
x != 'Y' and x != 'N'