0

我正在尝试了解有关if语句的更多信息。我试图创建一个程序,要求用户输入啤酒的数量,并在数量增加时输出不同的答案。我无法弄清楚我做错了什么。

我期望发生的是当我输入数字时。5 结果应该是“啤酒很棒”。因为它低于 50。如果我输入 60,它应该输出“那是很多啤酒”。因为它高于 50 低于 100。

我已经阅读了 Python 文档,但仍然没有弄清楚。这是我的代码:

print "How many cans of beer do you want?"

beer = raw_input("Enter your amount: ")

if beer >= 1:
    print "Beer is awesome."
elif beer >= 50:
    print "That's a lot of beer."
elif beer >= 100:
    print "You're drinking way too much beer, man."
else:
    "Did you make a choice larger than 100? If yes, then you're crazy!"
4

4 回答 4

5

raw_input 返回一个字符串,您应该将其转换为 int 以对其进行数学/运算。

beer = int(raw_input("Enter your amount: "))

此外,请务必在帖子中提及哪里出了问题/违背了您的期望,在这种情况下,很容易看到,但使用更复杂的代码,很快就会发现实际问题是什么。

编辑:您的程序还有另一个问题,但我认为当您运行它而不会出现错误时,您将能够自己解决这个问题。

于 2013-10-21T11:18:26.520 回答
0

问题是 raw_input 返回一个字符串 -= 以对返回的值进行数字比较,你必须将其转换为int.

尝试将您的输入行更改 beer = int(raw_input("Enter your amount: "))

于 2013-10-21T11:19:10.290 回答
0

您应该使用上限而不是下限,否则您的第一个 if 始终为真,您会得到“Beer is awesome”。

if beer < 50:
    print "Beer is awesome."
elif beer < 100:
    print "That's a lot of beer."
elif beer < 500:
    print "You're drinking way too much beer, man."
else:
    "Did you make a choice larger than 500? If yes, then you're crazy!"
于 2013-10-21T11:24:57.070 回答
0

让我们看看你的if陈述是做什么的。

if beer >= 1:

这意味着当 的值beer大于或等于 1 时,将执行以下代码。

elif beer >= 50

elif是一个关键字,您可以在其他语言中找到“else if”。它的意思是这样的:如果前面的语句为假(else)但下面的语句为真(if),则执行下面的块。这意味着您只会得到输出“那是很多啤酒”。whenbeer >= 1是假的,beer >= 50是真的——永远不会,因为beer不能同时小于 1 和大于 50。其他elif陈述也是如此。

你可能会得到最后一个输出,“你做了大于 100 的选择吗?如果是,那你疯了!”,当所有其他陈述都是错误的 - 换句话说,当beer等于或小于零时。

我希望你现在明白如何得到正确的陈述,得到你想要的。

于 2013-10-21T11:34:29.660 回答