gpt4 book ai didi

python - Python 中 == 和 is 运算符的区别

转载 作者:太空宇宙 更新时间:2023-11-04 09:57:32 24 4
gpt4 key购买 nike

print("enter your age")
age = int(input())
if age < 21:
print("no beer")
if age > 21:
print("what beer do you like?")
beer = input()
if beer is "union":
print("this is water")

输入 union 回答后什么也没有发生。为什么?提前致谢!!!

最佳答案

这里有一些错误:

您检查 age < 21age > 21 ,但如果我刚好 21 岁会怎样?您需要更改 >>=为了捕获这个案例(假设你在美国,饮酒年龄为 21 岁及以上)。

我注意到的另一件事。如果我未满 21 岁会怎样?

Traceback (most recent call last):
File "beer.py", line 8, in <module>
if beer is "union":
NameError: name 'beer' is not defined

糟糕。您已经定义了 beer ,但如果您未满 21 岁,则永远不会达到此条件。因此,当您引用 beer 时在你的最后if陈述,口译员不知道你在说什么。您需要移动最后一个 if在第二个里面:

if age > 21:
print("what beer do you like?")
beer = input()
if beer is "union":
print("this is water")

最后,使用 is 不是一个明智的主意作为 == 的替代品运算符,因为它们不等价。在这种情况下,beer is "union"计算结果为 False,而 beer == "union"不会,但在某些情况下,这两个语句在功能上是等效的。例如:

$ python -i
>>> x = 3
>>> if x is 3:
... print('x is 3!')
...
x is 3!

因此,您的最终代码将如下所示:

print("enter your age")
age = int(input())
if age < 21:
print("no beer")
if age >= 21:
print("what beer do you like?")
beer = input()
if beer == "union":
print("this is water")

编辑:see this answer为什么它们不等价。 is检查它们是否是同一个对象,而 ==检查值是否相等(这是您想要的)。

关于python - Python 中 == 和 is 运算符的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45202388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com