Python Int对象在计算差旅费时出错

Python Int对象在计算差旅费时出错,python,Python,这是我的密码。我一直得到这样的信息:int对象是不可交互的。我不确定我做错了什么 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":

这是我的密码。我一直得到这样的信息:int对象是不可交互的。我不确定我做错了什么

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"))
求和需要一个可数,一系列的东西来求和。但你给了它一个整数:

rental_car_cost(6) + plane_ride_cost("Tampa")
已将两个整数结果相加

删除sum调用,此处不需要它,因为+完全可用:

def trip_cost(city, days):
    return rental_car_cost(6) + plane_ride_cost("Tampa")
您可能希望使用城市和天数参数,而不是将天数硬编码为6,将城市硬编码为坦帕

顺便说一句,以城市名称作为飞机行驶成本函数第一行的列表定义是多余的;它只生成一个假值列表,没有一个城市名称字符串等于以下数字:

>>> ["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]

请拿出一个更好的题目。非常感谢!我试图编一本字典,但我显然把[]错当成了{},这就是为什么我认为它会有用的原因。谢谢你指出这一点并帮助我解决这个问题。