==的区别在于Python中的运算符

时间:2017-07-19 22:57:25

标签: python python-3.x

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")

输入工会后回答没有任何反应。为什么?在此先感谢!!!

4 个答案:

答案 0 :(得分:2)

这里有一些问题:

您检查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"运算符并不明智,因为它们不等同。在这种情况下,beer == "union"计算结果为False,而$ 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")

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

is

编辑:see this answer了解他们为何不等同。 ==检查它们是否是同一个对象,而{{1}}检查值是否相同(这是你想要的)。

答案 1 :(得分:1)

来自&#34;的文档&#34;操作者:

  

运算符isis not测试对象标识:x is y为真   当且仅当xy是同一个对象时。

只需将您的第二行更改为

即可
if beer == "union":

代码可行。

答案 2 :(得分:0)

您的代码中存在明显的错误,测试if beer is "union"应该是if beer == "union",不在age > 21检查范围内。

也就是说,如果age < 21仍然会发生beer检查,并且beer将是未定义的,则会引发异常。

  

NameError:name&#39; beer&#39;未定义

这有点理智:

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")

答案 3 :(得分:0)

我认为这张照片将清楚地说明&#34; is&#34;之间的区别。和&#34; ==&#34;。

enter image description here