You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python函数参数不匹配引发类型错误问题排查与解决

解决trip_cost函数参数顺序导致的类型错误问题

问题根源

你最初定义的trip_cost函数参数顺序是(days, city),但调用时传入的是trip_cost('Pittsburgh', 8)——这直接导致参数分配完全错位:

  • 字符串'Pittsburgh'被错误赋值给了第一个参数days
  • 数字8被错误赋值给了第二个参数city

这会引发两个关键问题:

  1. 调用hotel_cost(days)时,days是字符串类型,140 * 'Pittsburgh'会生成一个重复140次的字符串(而非预期的数字成本)
  2. 调用plane_ride_cost(city)时,city是数字8,不在函数的城市判断分支里,因此函数默认返回None

当你尝试把字符串和None相加时,就触发了错误:cannot concatenate 'str' and 'NoneType' objects

解决方法

调整trip_cost的参数顺序,让调用时的传参逻辑和函数定义匹配:将参数顺序改为(city, days),这样调用trip_cost('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(city, days):
    return hotel_cost(days) + plane_ride_cost(city) + rental_car_cost(days)

# 正常调用示例
print(trip_cost('Pittsburgh', 8))  # 输出对应的旅行总成本

内容的提问来源于stack exchange,提问作者Diganto M. Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:31:56