python函数参数不匹配

2024-10-02 16:26:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在定义下面的函数。在

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

但是,当它执行时,我收到以下错误:

^{pr2}$

但是,如果我执行下面的代码

^{3}$

它运行良好。在

完整代码如下:

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)

Tags: 代码cityreturnifdefcardayshotel
3条回答

我认为问题是你在第一次比赛中把一个“匹兹堡”传给了第二天和第八天。因此,第一个函数hotel_cost返回一个字符串,而第二个函数plane_ride_cost没有返回任何值,因为它没有一个实例与8匹配。因此它返回NoneType对象,不能附加到返回的string对象。在

因此,在向函数传递参数时,最佳做法是列出参数,然后传递值,如下所示。公司名称:

trip_cost(days = 8 , city = 'Pittsburgh')

这是因为函数希望第一个参数是整数,但您传递的是一个str来代替它。在

处理这种情况的一个聪明的方法是传递如下对象:{'city':'Pittsburgh', 'days':10}

代码运行良好:

呼叫行程费用(天,城市)即(8,“匹兹堡”)而不是“匹兹堡”,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在

相关问题 更多 >