如何对照庞大的列表检查输入?

2024-10-02 22:32:11 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的密码:

while True:  
    print(vehiclelist)  
     reg = input('Enter registration number of vehicle: ')  
     if reg in vehiclelist:  
         break  
     else:  
         print("Invalid")

但它一直显示其无效,这是输出:

[Car('SJV1883R', 'Honda', 'Civic', 60.00), Car('SJZ2987A', 'Toyota', 'Altis', 60.00), Car('SKA4370H', 'Honda', 'Accord', 80.00), Car('SKD8024M', 'Toyota', 'Camry', 80.00), Car('SKH5922D', 'BMW', '320i', 90.00), Car('SKM5139C', 'BMW', '520i', 100.00), Car('SKP8899H', 'Mercedes', 'S500', 300.00), Truck('GB3221K', 'Tata', 'Magic', 200.00), Truck('YB8283M', 'Isuzu', 'NPR', 250.00), Truck('YK5133H', 'Isuzu', 'NQR', 300.00)]
Enter registration number of vehicle: SJZ2987A
Invalid

你知道我怎么检查输入吗?你知道吗

这是我的车辆等级:

class Vehicle():
    def __init__(self, regNo, make, model, dailyRate, available):
        self.regNo = regNo
        self.make = make
        self.model = model
        self.dailyRate = dailyRate
        self.available = available

    @property
    def dailyRate(self):
        return self.__dailyRate

    @dailyRate.setter
    def dailyRate(self, dailyRate):
        if dailyRate < 0:
            self.__dailyRate = 0
        else:
            self.__dailyRate = dailyRate

    def __repr__(self):
        return "Vehicle('{:s}', '{:s}', '{:s}', {:.2f}, '{:s}')".format(self.regNo, self.make, self.model, self.dailyRate, self.available)

Tags: selfnumbermakemodeldefregistrationregcar
2条回答

您需要迭代各个car对象并比较regNo

def getInput():
    while True:
        print(vehiclelist)  
        reg = input('Enter registration number of vehicle: ')
        for car in vehiclelist:
            if reg == car.regNo:
                return
        print("Invalid")

这里的问题是vehicle_list是一个车辆对象列表,您不能直接在车辆对象列表中搜索注册号。你知道吗

更好的设计模式是使用字典,其中regNo将显示为key,vehicle对象将显示为value。你知道吗

您可以按以下方式更改代码:

vehicle_details = {vehicle.regNo : vehicle for vehicle in vehiclelist}
while True:  
    reg = input('Enter registration number of vehicle: ')  
    if reg in vehicle_details:  
        break  
    else:  
        print("Invalid")

相关问题 更多 >