查看错误消息,我无法找到错误,我们将值插入到函数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
===================
答案 0 :(得分:4)
sum()
计算可迭代的总和,例如列表。但是,您尝试使用它来添加两个数字:
def prev_add(a,b):
return sum(a,b)
如果您只想添加a
和b
,请使用+
:
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)