Unbound Local Error: Local variable 'input' referenced before assignment, Help please

6 浏览
0 Comments

Unbound Local Error: Local variable 'input' referenced before assignment, Help please

class Car():

def __init__(self, model, make, speed):

self.__model = model

self.__make = make

self.__speed = speed

def accelerate(self, speed):

self.__speed = speed + 5

def brake(self, speed):

self.__speed = speed - 5

def get_speed(self):

return self.__speed

def main():

speed = input("请输入汽车当前速度:")

make = input("请输入汽车制造商:")

model = input("请输入汽车型号:")

user_input = input("请输入1加速,2刹车:")

car = Car(model, make, speed)

if user_input == '1':

car.accelerate(speed)

elif user_input == '2':

car.brake(speed)

speed1 = car.get_speed()

print("您的汽车制造商是:", make)

print("您的汽车型号是:", model)

print("您的汽车速度是:", speed)

main()

我不知道为什么在第19行,当我要求输入速度时会报错。

0
0 Comments

这个问题的出现是因为在函数中使用了与内建函数同名的变量,导致内建函数被屏蔽了。解决方法是使用一个不同的变量名。

在上面的代码中,第一个问题出现在这一行:

input = input("Enter 1 to accelerate , 2 to brake, ")

这一行将input变量作为函数的本地变量,覆盖了内建函数input。当Python编译一个函数时,它会将本地变量转换为函数对象中的插槽索引,以提高速度。因此,input在函数体的生命周期内成为了一个本地变量,而不能再被视为全局的input函数。

解决方法是使用一个不同的变量名来代替input。在下面的代码中,将input变量改为user_input

def main():
    speed = user_input("Enter your cars current speed:")
    make = user_input("Enter your cars make")
    model = user_input("Enter your cars model")
    accelerate_or_brake = user_input("Enter 1 to accelerate , 2 to brake, ")
    car = Car(model,make,speed)

通过更改变量名,避免了与内建函数input的冲突,从而解决了Unbound Local Error的问题。

0