0

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

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"

另外,如何确保输入“天”的数字?

4

3 回答 3

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"
于 2013-06-19T16:30:54.993 回答
3

days>= 7andelse子句永远不会触发,因为前面的触发器days >= 3在相同的输入上。if//子句按顺序处理,直到其中一个被触发elifelse

您需要的是days < 2,days < 7和的子句else

要检测非数字,请从

if not isinstance(days, int):

它对整数进行类型检查。

于 2013-06-19T16:32:07.317 回答
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:.

于 2013-06-19T16:37:58.843 回答