Int对象不计算旅行成本的可迭代错误

时间:2015-09-07 19:34:03

标签: python

这是我的代码。我不断收到"int" object is not interable的消息。我不确定我做错了什么?

def hotel_cost(nights):
    return(nights*140)
hotel_cost(1)

def plane_ride_cost (city):
    ["Charlotte" == 183, "Tampa" == 220, "Los_Angeles" == 475,
    "Pittsburgh" == 222]
    if (city) == "Charlotte":
       return 183
    elif (city) == "Tampa":
        return 220
    elif (city) == "Los Angeles":
        return 475
    elif (city) == "Pittsburgh":
        return 222 

plane_ride_cost("Tampa")

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

def trip_cost(city, days):
    return sum(rental_car_cost(6) + plane_ride_cost("Tampa"))

1 个答案:

答案 0 :(得分:0)

sum()期望一个可迭代的,一系列事物要求和。但你给它一个整数:

rental_car_cost(6) + plane_ride_cost("Tampa")

已经将两个整数结果相加。

删除sum()来电,您在此处不需要,因为+完全可以使用:

def trip_cost(city, days):
    return rental_car_cost(6) + plane_ride_cost("Tampa")

您可能希望在那里使用citydays参数,而不是将日期硬编码为6,将城市硬编码为"Tampa"

顺便提一下,将城市名称作为plane_ride_cost()函数的第一行的列表定义是多余的;它只生成一个False值列表(城市名称字符串都不等于下面的数字):

>>> ["Charlotte" == 183, "Tampa" == 220, "Los_Angeles" == 475,
...  "Pittsburgh" == 222]
[False, False, False, False]
无论如何,你无视它。您可以将其定义为字典吗?像这样:

def plane_ride_cost(city):
    plane_tickets = {
        "Charlotte": 183,
        "Tampa": 220,
        "Los_Angeles": 475,
        "Pittsburgh": 222
    }
    return plane_tickets[city]