我只是开始并对此功能感到生气(它给了我错误的输出):
def rental_car_cost(days):
x = 40
if days < 2:
return days*x
elif days >= 3:
return days*x-20
elif days>= 7:
return days*x-50
else:
print "Please enter nr of days"
另外,如何确保输入数字&#34;天&#34;?
答案 0 :(得分:5)
不确定您的期望,但更改elif
条件的顺序:
def rental_car_cost(days):
if isinstance(days, int):
x = 40
if days < 2:
return days*x
elif days >= 7:
return days*x-50
elif days>= 3:
return days*x-20
else:
print "Please enter nr of days"
答案 1 :(得分:3)
days>= 7
和else
子句永远不会触发,因为较早的days >= 3
会触发相同的输入。 if
/ elif
/ else
条款按顺序处理,直到触发其中一个。
您需要的是days < 2
,days < 7
和else
的条款。
要检测非数字,请从
开始if not isinstance(days, int):
对整数进行类型检查。
答案 2 :(得分:1)
rental_car_cost(2)
应该等于60
但是,你的if语句都不匹配2. 2不小于2,也不大于或等于3,也不大于或等于7.遵循其他两个答案的建议由larsmans和Ankit Jaiswal也是,但我假设2应该匹配days*x-20
部分。只需将elif days >= 3:
更改为elif days >= 2:
。