Python上原始输入的If…else语句问题

Python上原始输入的If…else语句问题,python,Python,我目前正在学习Zed Shaw关于Python的书《艰苦地学习Python》,并且正在学习函数。我决定按照课程附带的一些额外的学分练习进行操作,并添加了一个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

我目前正在学习Zed Shaw关于Python的书《艰苦地学习Python》,并且正在学习函数。我决定按照课程附带的一些额外的学分练习进行操作,并添加了一个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磅食物”,但是如果我直接给变量水和食物分配一个数字,它就会工作

原始输入的返回值是一个字符串,但是当您检查食物的值时,您使用的是一个int。事实上,
如果食物==1
永远不可能是
真的
,因此流总是默认为复数形式

您有两个选择:

if int(food) == 1:
上述代码将食物转换为整数类型,但如果用户未键入数字,则会引发异常

if food == '1':

上面的代码正在检查字符串“1”而不是整数(请注意周围的引号)。

在Python2.x中,原始输入返回一个字符串。查看代码,还可以使用返回整数的。我认为这将是使用Python2的最佳选择


然后,通过使用%d而不是%s,您可以在整个代码中将食物视为int。输入非整数时,程序将抛出异常。

非常感谢您的帮助。他可能提到原始输入总是返回字符串,但我可能已经忘记了。现在可以了,谢谢你的帮助。@Matt如果你觉得有用,请接受Narpar1217的答案作为有效答案。