簡體   English   中英

UnboundLocalError:分配前已引用局部變量“ cars”

[英]UnboundLocalError: local variable 'cars' referenced before assignment

我正在編寫一個程序,用於通過菜單存儲和顯示汽車清單。 但是,我繼續收到該錯誤:

".py", line 24, in car_invent
    cars = cars.Car(make, model, mileage, price, doors)
UnboundLocalError: local variable 'cars' referenced before assignment"

我已經在開始時導入了模塊,但我不明白為什么它會給我這個錯誤

我的代碼是

import cars

def print_desc(item):
    print "Make:", item.get_make()
    print "Model:", item.get_model()
    print "Mileage:", item.get_mileage()
    print "Price:", item.get_price()

def car_invent():
    car_invent = []

    print "Enter data for the cars."

    num_cars = input("Enter number of cars: ")

    for count in range(num_cars):
        make = raw_input("Enter the make: ")
        model = input("Enter the year model: ")
        mileage = input("Enter the mileage: ")
        price = input("Enter the price: ")
        doors = input("Enter the number of doors: ")

        cars = cars.Car(make, model, mileage, price, doors)

        car_invent.append(cars)

    return car_invent

def truck_invent():
    truck_invent = []

    print "Enter data for the trucks."

    num_trucks = input("Enter number of trucks: ")

    for count in range(num_trucks):
        make = raw_input("Enter the make: ")
        model = input("Enter the year model: ")
        mileage = input("Enter the mileage: ")
        price = input("Enter the price: ")
        drive_type = input("Enter the drive type: ")

        trucks = cars.Truck(make, model, mileage, price, drive_type)

        truck_invent.append(truck)

    return truck_invent

def suv_invent():
    suv_invent = []

    print "Enter data for the cars."

    num_suv = input("Enter number of SUVs: ")

    for count in range(1, num_suv):
        make = raw_input("Enter the make: ")
        model = input("Enter the year model: ")
        mileage = input("Enter the mileage: ")
        price = input("Enter the price: ")
        pass_cap = input("Enter passenger capacity: ")

        suv = cars.SUV(make, model, mileage, price, pass_cap)

        suv_invent.append(suv)

    return suv_invent


def read_invent(car_invent, truck_invent, suv_invent):
    print "USED CAR INVENTORY"
    print "=================="
    print "The following car is in inventory."

    for item in car_invent:
        print_desc(item)
        print "Number of doors:", item.get_doors()

    print "The following pickup truck is in inventory."

    for item in truck_invent:
        print_desc(item)
        print "Drive type:", item.get_drive_type()


    print "The following SUV is in inventory."

    for item in suv_invent:
        print_desc(item)
        print "Passenger Capacity:", item.get_pass_cap()

def menu():
    print "MENU"
    print "====="
    print "1. Enter data for inventory"
    print "2. Display inventory"
    print "3. Quit"

def main():
    menu()

    choice = input("Enter choice: ")
    while choice != 3:

        if choice == 1:
            cars = car_invent()
            trucks = truck_invent()
            suv = suv_invent()
            choice = input("Enter choice: ")

        elif choice == 2:
            read_invent(cars, trucks, suv)
            choice = input("Enter choice: ")

        else:
            print "Invalid choice"
            choice = input("Enter choice: ")

main()

這也是供參考的模塊:

class Automobile:

    def __init__(self, make, model, mileage, price):
        self.__make = make
        self.__model = model
        self.__mileage = mileage
        self.__price = price

    def set_make(self, make):
        self.__make = make

    def set_model(self, model):
        self.__model = model

    def set_mileage(self, mileage):
        self.__mileage = mileage

    def set_price(self, price):
        self.__price = price

    def get_make(self):
        return self.__make
    def get_model(self):
        return self.__model

    def get_mileage(self):
        return self.__mileage
    def get_price(self):
        return self.__price

class Car(Automobile):
    def __init__(self, make, model, mileage, price, doors):
        Automobile.__init__(self, make, model, mileage, price)

        self.__doors = doors

    def set_doors(self, doors):
        self.__doors = doors

    def get_doors(self):
        return self.__doors

class Truck(Automobile):
    def __init__(self, make, model, mileage, price, drive_type):
        Automobile.__init__(self, make, model, mileage, price)

        self.__drive_type = drive_type

    def set_drive_type(self, drive_type):
        self.__drive_type = drive_type

    def get_drive_type(self):
        return self.__drive_type

class SUV(Automobile):
    def __init__(self, make, model, mileage, price, pass_cap):
        Automobile.__init__(self, make, model, mileage, price)

        self.__pass_cap = pass_cap

    def set_pass_cap(self, pass_cap):
        self.__pass_cap = pass_cap

    def get_pass_cap(self):
        return self.__pass_cap
cars = cars.Car(make, model, mileage, price, doors)
  1. 您聲明一個名為cars的局部變量

  2. 您分配cars.Car(...)cars

  3. 但是cars是一個尚無值的局部變量(未綁定的局部變量)

  4. 您的程序崩潰

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM