Python:如何将input()字符串与另一个字符串进行比较?
问题描述:
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()字符串与另一个字符串进行比较?
答
本声明
x != 'Y' or x != 'N'
总是True
,因为一切都在世界上是不是 “Y” 或没有 “N”。
将其更改为:
x != 'Y' and x != 'N'
答
更改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
是一个贫穷的变量名,调用它更合适些。
当大小写无关紧要时,您应该在比较字符串时将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()
@ tigerhawkT3我不认为这是正确的副本。 – Maroun
@MarounMaroun - 当然是。添加一个'not'(例如'x not in'YN'')是微不足道的。 – TigerhawkT3