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

Python中UnboundLocalError:range变量赋值前引用问题求助

解决UnboundLocalError: local variable 'range' referenced before assignment错误

问题场景

你创建ElectricCar实例my_tesla后,将其battery_size设置为125,调用get_range()方法时触发UnboundLocalError,提示局部变量range在赋值前被引用。

错误原因

问题出在Battery类的get_range()方法中:

def get_range(self):
    """Imprime una frase acerca del alcance que proporciona esta batería."""
    if self.battery_size == 75:
        range = 418.43
    elif self.battery_size == 100:
        range = 506.94

    print(f"Este coche puede circular unos {range} kilómetros con una carga completa.")

只有当battery_size为75或100时,range变量才会被赋值。当你设置battery_size=125时,两个条件都不满足,range根本未被定义,执行print语句时自然触发错误。

解决方案

确保无论battery_size是什么值,range都有对应的赋值。可以通过初始化默认值或添加else分支实现:

修改后的get_range()方法示例:

def get_range(self):
    """Imprime una frase acerca del alcance que proporciona esta batería."""
    # 初始化默认续航值,或根据容量估算
    if self.battery_size == 75:
        range = 418.43
    elif self.battery_size == 100:
        range = 506.94
    else:
        # 针对其他容量的估算逻辑,这里用简单比例示例
        range = self.battery_size * 5.5

    print(f"Este coche puede circular unos {range} kilómetros con una carga completa.")

错误信息翻译

2019 Tesla Model S
这辆车配备125千瓦时的电池。
回溯(最近的调用位于最上方):
文件 "/home/usuario/PycharmProjects/pythonCrashCourse/capitulo_9_clases/electric_car_2.py",第76行,在中
my_tesla.battery.get_range()
文件 "/home/usuario/PycharmProjects/pythonCrashCourse/capitulo_9_clases/electric_car_2.py",第52行,在get_range中
print(f"Este coche puede circular unos {range} kilómetros con una carga completa.")
UnboundLocalError: 局部变量 'range' 在赋值前被引用

进程结束,退出代码1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:01:02