我进行了搜索,但似乎找不到任何遇到相同问题的人,尽管我对python还是很陌生,并且很有可能只是用户错误。
在if语句中同时使用'or'和.lower时遇到问题。如果我使用代码:
print('press Y to continue or Q to quit')
end = input()
if end is 'y':
continue
else:
break
然后我的代码可以正常工作,尽管如果用户输入大写字母Y,程序将继续执行else语句并结束程序。如果我使用以下代码:
print('press Y to continue or Q to quit')
end = input()
end = end.lower()
if end is 'y': #I have also tried end.lower() here, removing the line above
continue
else:
break
该程序继续以任何输入中断。如果我在if语句之前打印“ end”,则返回:
<built-in method lower of str object at 0x7fa6b8176f80>
我还尝试用==替换is,这给了我相同的结果。我对if is语句的措辞有疑问吗?
答案 0 :(得分:1)
您有两个问题:
end.lower
而不是end.lower()
。这意味着Python将看到方法str.lower
而不是其结果。 is
而不是==
。这会强制Python检查这两个对象是否相同,即在您计算机上的相同物理空间中。 ==
检查它们是否具有相同的值。通常,您几乎总是想要==
。