关于python函数不确定

时间:2013-06-19 16:28:16

标签: python python-2.7

我只是开始并对此功能感到生气(它给了我错误的输出):

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;?

3 个答案:

答案 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>= 7else子句永远不会触发,因为较早的days >= 3会触发相同的输入。 if / elif / else条款按顺序处理,直到触发其中一个。

您需要的是days < 2days < 7else的条款。

要检测非数字,请从

开始
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: