Python中UnboundLocalError:range变量赋值前引用问题求助
问题场景
你创建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

