错误:'int'对象在Python中不可迭代

时间:2014-12-25 08:43:33

标签: python

查看错误消息,我无法找到错误,我们将值插入到函数trip_cost('洛杉矶',4)中,城市将是字符串,天数将是INT 类型,是我应该知道的任何知识吗?

的代码:

def hotel_cost(nights):
    return 140*nights

def plane_ride_cost(city):    
    if city == "Charlotte":
        return 183
    elif city == "Tampa":
        return 220
    elif city == "Pittsburgh":
        return 222
    elif city == "Los Angeles":
        return 475
    else :
        return 123

def rental_car_cost(days):
    total = days *40
    if days >=7:
        total=total-50
        return total
    elif days >= 3 :

        total=total-20
        return total
    else :
        return total
def prev_add(a,b):
    return sum(a,b)
def trip_cost(city,days):
    nights = days
    hotel_cost_price = hotel_cost(nights)
    rental_car_price=rental_car_cost(days)
    prev_price = prev_add(rental_car_price,hotel_cost_price)
    plane_ride_price = plane_ride_cost(city)
    return sum(prev_price,plane_ride_price)

========================

错误代码:

 trip_cost('Los Angeles', 4) raised an error: 'int' object is not iterable 

===================

3 个答案:

答案 0 :(得分:4)

sum()计算可迭代的总和,例如列表。但是,您尝试使用它来添加两个数字:

def prev_add(a,b):
    return sum(a,b)

如果您只想添加ab,请使用+

def prev_add(a,b):
    return a + b

在这种情况下,我会完全摆脱这个功能,只使用添加。

您在

中使用sum()也是如此
return sum(prev_price,plane_ride_price)

答案 1 :(得分:2)

只需查看总结帮助文档即可。 sum(3,2)将失败,但sum((3,2))将起作用。由于sum(3,2)被认为是通过两个参数调用的sum函数,而sum((3,2))被认为是传递给sum函数的一个参数。

>>> help(sum)
Help on built-in function sum in module __builtin__:

sum(...)
    sum(sequence[, start]) -> value

    Return the sum of a sequence of numbers (NOT strings) plus the value
    of parameter 'start' (which defaults to 0).  When the sequence is
    empty, return start.

>>>

答案 2 :(得分:0)

它更简单,您不需要额外的prev_add功能。

解决方法是将您的city变量(传递给trip_cost)设置为plane_ride_cost(city)trip_cost的结果

def trip_cost(city, days):
    city = plane_ride_cost(city)
    return city + rental_car_cost(days) + hotel_cost(days)