Python 中 raw_input 的 if...else 语句问题
我现在正在学习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 个回答
4
raw_input
的返回值是一个字符串,但你在检查食物的数量时却用的是整数。这样的话,if food == 1
永远不会为True
,所以程序总是会走到复数形式的那一部分。
你有两个选择:
if int(food) == 1:
上面的代码会把food
转换成整数类型,但如果用户没有输入数字,就会出现错误。
if food == '1':
上面的代码是在检查字符串'1',而不是整数(注意引号的存在)。