簡體   English   中英

打印列表中的某些元素(Python)

[英]Print certain elements from a list (Python)

我正在嘗試編寫一個包含汽車和 SUV 列表的程序。 應該詢問用戶他/她想要打印出哪輛車 model(前特斯拉)。 然后應打印 model 的所有項目。 下面的代碼給了我錯誤消息 TypeError: 'Car' object is not subscriptable - 有什么想法嗎?

class Vehicle:
    def __init__(self, make, model, year, mileage, price):
        self.make = make
        self.model = model
        self.year = year
        self.mileage = mileage
        self.price = price

    def getValues(self):
        return self.make + " " + self.model + " " + self.year + " " + self.mileage + " " + self.price

    def Display(self):
        print("Invetory Unit: Car \n Make: " + self.make + "\n Model: " + self.model + "\n Year " + self.year + "\n Miles " + self.mileage + " \n Price :" + self.price)

class Car(Vehicle):
    def __init__(self, make, model, year, mileage, price, num_doors):
        Vehicle.__init__(self,make, model,year,mileage,price)
        self.num_doors = num_doors

    def GetCar(self):
        return self.getValues() + ", " + self.num_doors

    def Display(self):
        print("Invetory Unit: Car \n Make: "+ self.make + "\n Model: " + self.model+ "\n Year " + self.year + "\n Miles " + self.mileage +" \n Price :" + self.price + " \n Number of doors :" + self.num_doors)

class SUV(Vehicle):
    def __init__(self, make, model, year, mileage, price, passcap):
        Vehicle.__init__(self, make, model, year, mileage, price)
        self.passcap = passcap
    def GetSUV(self):
        return self.getValus() + ", " + self.passcap
    def Display(self):
        print("Invetory Unit: SUV \n Make: "+ self.make + "\n Model: " + self.model+ "\n Year " + self.year+"\n Miles " + self.mileage+" \n Price :" + self.price+" \n Passenger capacity :" + self.passcap)

def main():
    vehicles_list = []
    vehicles_list.append(Car("Tesla", "S", "2020", "170000", "33000.0", "4"))
    vehicles_list.append(SUV("Tesla", "x", "2021", "180000", "23000.0", "6"))
    vehicles_list.append(Car("Tesla", "3", "2021", "180000", "23000.0", "4"))
    vehicles_list.append(Car("Ford", "Mustang", "2019", "140000", "22000.0", "2"))
    vehicles_list.append(SUV("Ford", "Explorer", "2021", "112000", "12000.0", "2"))

    selectedModel = input('Which car model would you like to print?: ')
    print([vehicle for vehicle in vehicles_list if vehicle[0] == model])
    
    selectedModel = input('Which car model would you like to print?: ')

    for vehicle in (vehicle for vehicle in vehicles_list if vehicle[0] == selectedModel):
        vehicle.Display()
main()

vehicle[0]替換為vehicle.modelmodel在您的第一個查詢中未定義,因此您可能應該放置selectedModel

我在這里解決了一些問題:

  1. 空列表應該用list()而不是[]初始化

  2. selected_model not selectedModel用於蛇盒

  3. 車輛vehicle.make制造不是vehicle[0]

僅供參考,您可以在其他類中將Display方法更改為__repr____str__ - 當您執行諸如print(vehicle)之類的操作時,它將自動呈現

def main():
    vehicles_list = list()
    vehicles_list.append(Car("Tesla", "S", "2020", "170000", "33000.0", "4"))
    vehicles_list.append(SUV("Tesla", "x", "2021", "180000", "23000.0", "6"))
    vehicles_list.append(Car("Tesla", "3", "2021", "180000", "23000.0", "4"))
    vehicles_list.append(Car("Ford", "Mustang", "2019", "140000", "22000.0", "2"))
    vehicles_list.append(SUV("Ford", "Explorer", "2021", "112000", "12000.0", "2"))

    selected_model = input('Which car model would you like to print?: ')
    print([vehicle for vehicle in vehicles_list if vehicle.make == selected_model])

    selected_model = input('Which car model would you like to print?: ')

    for vehicle in (vehicle for vehicle in vehicles_list if vehicle.make == selected_model):
        vehicle.Display()

暫無
暫無

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

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