zoukankan      html  css  js  c++  java
  • UnboundLocalError: local variable 'range' referenced before assignment

    1. 报错信息

    UnboundLocalError: local variable 'range' referenced before assignment

    2. 代码

    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()
    

      

    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变量,然后进行逻辑运算

        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. 执行结果

    D:python编程:从入门到实践venvScriptspython.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
    

      

     

  • 相关阅读:
    UEmacs/PK Keybindings
    ubunut install golang
    vyos ipsec l2tp simple experiment
    Lynx 命令行操作
    Linux开启路由转发功能
    PROTEUS的元器件及模型制作
    5G模拟网自动化测试的需求和挑战
    vyos site-to-site ipsec simple experiment
    kubeadm 搭建 k8s 时用到的常用命令汇总
    html 特殊符号标记
  • 原文地址:https://www.cnblogs.com/kevin-hou1991/p/14802500.html
Copyright © 2011-2022 走看看