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")
输入工会后回答没有任何反应。为什么?在此先感谢!!!
答案 0 :(得分:2)
这里有一些问题:
您检查age < 21
和age > 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;操作者:
运算符
is
和is not
测试对象标识:x is y
为真 当且仅当x
和y
是同一个对象时。
只需将您的第二行更改为
即可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)