我正在定义以下功能。
def trip_cost(days, city):
return hotel_cost(days) + plane_ride_cost(city) + rental_car_cost(days)
然而,当它执行时,我收到以下错误:
trip_cost('Pittsburgh', 8) raised an error: cannot concatenate 'str' and 'NoneType' objects
但是,如果我执行以下代码;
def trip_cost(city,days):
return hotel_cost(days) + plane_ride_cost(city) + rental_car_cost(days)
运行良好。
下面提供了完整的代码;
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
def rental_car_cost(days):
cost = days * 40
if days >= 7:
cost -= 50
elif days >= 3:
cost -= 20
return cost
def trip_cost(days, city):
return hotel_cost(days) + plane_ride_cost(city) + rental_car_cost(days)
答案 0 :(得分:0)
这是因为函数期望第一个参数是一个整数,但是你传递一个str代替它。
处理此类案例的一种聪明方法是传递可能如下所示的对象:{'city':'Pittsburgh', 'days':10}
答案 1 :(得分:0)
守则运作良好:
打电话trip_cost(天,城市)即(8,' Pittsburgh')而不是(' Pittsburgh',8)
示例:
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
def rental_car_cost(days):
cost = days * 40
if days >= 7:
cost -= 50
elif days >= 3:
cost -= 20
return cost
def trip_cost(days, city):
return hotel_cost(days) + plane_ride_cost(city) + rental_car_cost(days)
print trip_cost(4,'Tampa')
输出:920
答案 2 :(得分:0)
我认为问题在于你在第一天将一个字符串'Pittsburg'传递给了城市8天。因此第一个函数hotel_cost返回一个字符串,第二个函数plane_ride_cost没有返回任何内容,因为它的大小写都不匹配8.因此它返回NoneType对象,不能附加到返回的字符串对象。
因此,将参数传递给函数时的最佳做法是列出参数然后传递值,如下所示。 :
trip_cost(days = 8 , city = 'Pittsburgh')