2017-02-12 153 views
-2
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经验,所以任何人都可以告诉我我做错了什么?Python:如何将input()字符串与另一个字符串进行比较?

+0

@ tigerhawkT3我不认为这是正确的副本。 – Maroun

+0

@MarounMaroun - 当然是。添加一个'not'(例如'x not in'YN'')是微不足道的。 – TigerhawkT3

回答

1

本声明

x != 'Y' or x != 'N' 

总是True,因为一切都在世界上是不是 “Y” 或没有 “N”。

将其更改为:

x != 'Y' and x != 'N' 
0

更改orand,因为你要检查它不等于到这些领域。如果你想使用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是一个贫穷的变量名,调用它更合适些。

当大小写无关紧要时,您应该在比较字符串时将case降低。在这种情况下,案件并不重要,所以使用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() 
相关问题