将多个用户类实例存储在列表中嵌入的元组中



我正试图将用户输入对象的多个实例存储在一个元组中,然后将每个元组存储在单个列表中一次。这是我的脚本代码:

class HolidayData:       
def __init__(self, idnum, dcity):
self.idnum = idnum  
self.dcity = dcity 
def main():
global holiday_data_obj 
global holiday_database
holiday_data_obj = []
holiday_database = []
while True:
if input("Add Holiday Package? (y/n) ") == "n":
break
else:
idnum = int(input('Enter your unique id number: '))
dcity = str(input('Enter your destination city : '))
add_packages(idnum, dcity)
print_packages()

def add_packages(idnum, dcity):
holiday_data_obj.append( HolidayData(idnum, dcity))
for package in holiday_data_obj:
F = tuple(package.__dict__.values())
holiday_database.append(F)
def print_packages():    
print(holiday_database)

这是我得到的输出模式?

[(1,‘第一城市’(,(1,"第一城市"(,(2,‘第二城市’(

我曾尝试迭代holidaydataobject和databaselist来检查重复值,但最终得到了相同的输出模式。

问题出在附加逻辑上。每次获得新项目时,都会将整个包列表添加到"数据库"中。因此,第一次,您只添加新的程序包。第二次,添加第一个和第二个包。第三次,您添加所有三个包。

在每次迭代中只添加最新的包。或者,将它们全部收集到包列表中,然后在用户输入n后仅将它们添加到数据库中。两者兼而有之会导致你的问题。

最新更新