在__是__语句中使用.lower或'or'会导致python 3.6中的if语句流不正确

时间:2018-07-04 02:35:22

标签: python if-statement lowercase

我进行了搜索,但似乎找不到任何遇到相同问题的人,尽管我对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语句的措辞有疑问吗?

1 个答案:

答案 0 :(得分:1)

您有两个问题:

  1. 您使用的是end.lower而不是end.lower()。这意味着Python将看到方法str.lower而不是其结果。
  2. 您使用is而不是==。这会强制Python检查这两个对象是否相同,即在您计算机上的相同物理空间中。 ==检查它们是否具有相同的值。通常,您几乎总是想要==