UnboundLocalError: local variable 'range' referenced before assignment
1. 报错信息
UnboundLocalError: local variable 'range' referenced before assignment
2. 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | class Car(): """一次模拟汽车的简单尝试""" def __init__( self , make, model, year): """初始化描述汽车的属性""" self .make = make self .model = model self .year = year self .odometer_reading = 0 def get_descriptive_name( self ): """返回整洁的描述性信息""" long_name = str ( self .year) + ' ' + self .make + ' ' + self .model return long_name.title() def read_odometer( self ): """打印一条指出汽车里程的消息""" print ( "This car has " + str ( self .odometer_reading) + " miles on it." ) def update_odometer( self , mileage): """将里程表读数设置为指定值""" self .odometer_reading = mileage """ 将里程表读数设置为指定的值, 禁止将里程表读数往回调 """ if mileage > = self .odometer_reading: self .odometer_reading = mileage else : print ( "You can't roll back an odometer!" ) def increment_odometer( self , miles): """将里程表读数增加指定的量""" self .odometer_reading + = miles # my_used_car = Car('subaru', 'outback', 2013) # print(my_used_car.get_descriptive_name()) # # my_used_car.update_odometer(23500) # my_used_car.read_odometer() # # my_used_car.increment_odometer(100) # my_used_car.read_odometer() # my_new_car = Car('audi', 'a4', 2016) # print(my_new_car.get_descriptive_name()) # my_new_car.update_odometer(23) # # my_new_car.odometer_reading = 23 # my_new_car.read_odometer() class Battery(): """一次模拟电动汽车的属性""" def __init__( self , battery_size = 60 ): """初始化电瓶属性""" self .battery_size = battery_size def describle_battery( self ): """打印一天描述电瓶容量的消息""" print ( "This car has a " + str ( self .battery_size) + " -kWh battery." ) def get_range( self ): """打印一条描述电瓶续航里程的消息""" # range = 200 if self .battery_size = = 70 : range = 240 elif self .battery_size = = 85 : range = 270 message = "This car can go approximately " + str ( range ) message + = " miles on a full charge." print (message) class ElectricCar(Car): """模拟电动汽车的独特之处""" def __init__( self , make, model, year): """初始化父类的属性,在初始化电动汽车特有属性""" super ().__init__(make, model, year) self .battery = Battery() |
1 2 3 4 5 | from car import ElectricCar my_tesla = ElectricCar( 'tesla' , 'model S' , 2016 ) print (my_tesla.get_descriptive_name()) my_tesla.battery.describle_battery() my_tesla.battery.get_range( ) |
3. 解决方法
在get_range()方法中先定义一个range变量,然后进行逻辑运算
1 2 3 4 5 6 7 8 9 10 11 | def get_range( self ): """打印一条描述电瓶续航里程的消息""" range = 200 # 先定义变量,后进行运算 if self .battery_size = = 70 : range = 240 elif self .battery_size = = 85 : range = 270 message = "This car can go approximately " + str ( range ) message + = " miles on a full charge." print (message) |
4. 执行结果
1 2 3 4 5 6 | D:\python编程:从入门到实践\venv\Scripts\python.exe D: / python编程:从入门到实践 / my_electric_car.py 2016 Tesla Model S This car has a 60 - kWh battery. This car can go approximately 200 miles on a full charge. Process finished with exit code 0 |
分类:
python编程:从入门到实践
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律