Python 中 raw_input 的 if...else 语句问题

5 投票
2 回答
599 浏览
提问于 2025-04-28 08:48

我现在正在学习Zed Shaw的《Learn Python the Hard Way》这本书,主要在学习函数。我决定做一些额外的练习,顺便加了一个IF ELSE的流程控制语句。下面是我写的代码。

print "How much bottles of water do you have?"
water = raw_input("> ")

print "How many pounds of food do you have?" 
food = raw_input("> ")

if food == 1:
    def water_and_food(bottles_of_water, food):
        print "You have %s bottles of water" % bottles_of_water
        print "And %s pound of food" % food

else:
    def water_and_food(bottles_of_water, food):
        print "You have %s bottles of water" % bottles_of_water
        print "And %s pounds of food" % food

water_and_food(water, food)

我想要实现的功能是这样的:如果用户输入他们有1磅食物,就显示“你有1磅食物”。如果他们输入有2磅或更多的食物,就显示“你有2磅食物”,这里的区别在于“磅”是单数还是复数。

但是,如果我输入1,它还是会显示“你有1磅食物”,而不是“你有1磅食物”。不过,如果我直接给变量water和food赋一个数字,它就能正常工作。

暂无标签

2 个回答

1

在Python 2.x中,raw_input会返回一个字符串。根据你的代码,你也可以使用input,它会返回一个整数。我觉得这在使用Python 2时是最明确的选择。

这样在你的代码中,你可以把食物当作整数来处理,使用%d而不是%s。当输入的不是整数时,你的程序会抛出一个异常。

4

raw_input的返回值是一个字符串,但你在检查食物的数量时却用的是整数。这样的话,if food == 1永远不会为True,所以程序总是会走到复数形式的那一部分。

你有两个选择:

if int(food) == 1:

上面的代码会把food转换成整数类型,但如果用户没有输入数字,就会出现错误。

if food == '1':

上面的代码是在检查字符串'1',而不是整数(注意引号的存在)。

撰写回答