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

运行Python代码触发NameError报错提示total_charge未定义如何解决?

报错产生原因
  • 核心原因:total_charge 仅在 code == "B" 条件成立时才会被创建赋值,若你后续代码在条件不触发的场景下调用了total_charge,该变量未完成定义就会触发NameError。
  • 附加语法隐患:代码中based_charge: int(40 * days)是错误写法,冒号属于Python类型标注语法,该行没有赋值操作,based_charge不会被正常赋值,哪怕条件成立,后续计算total_charge时也会触发based_charge未定义的错误。
排查步骤
  1. 打印code变量的实际运行值,确认if code == "B"的判断是否符合预期,是否存在条件未触发的场景
  2. 检查调用total_charge的代码位置,是否位于if分支外,没有做兜底处理
  3. 检查based_charge的赋值语法是否正确
修复方案

首先修正based_charge的赋值语法,然后给total_charge添加兜底默认值,或者确保调用total_charge的逻辑仅在条件成立时执行。
示例修复代码:

# 先给变量设置默认值兜底
total_charge = 0
if code == "B":
    # 把冒号改成等号完成赋值,需要类型标注可以写成 based_charge: int = int(40 * days)
    based_charge = int(40 * days) 
    mileage_charge = driven * .25
    total_charge = mileage_charge + based_charge

# 后续调用total_charge的代码

如果不同code对应不同计费逻辑,也可以补全所有分支的赋值逻辑:

if code == "B":
    based_charge = int(40 * days)
    mileage_charge = driven * .25
    total_charge = mileage_charge + based_charge
elif code == "A":
    # 对应A类的计费逻辑
    ...
else:
    # 异常场景兜底
    total_charge = 0
    print("无效的code值")

内容的提问来源于stack exchange,提问作者Yones Mussa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:39:01