我试图将用户输入对象的多个实例存储在一个元组中,然后将每个元组一次存储在一个列表中。 这是我的脚本代码:
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,'第二城市'),(1,'第一城市'),(2,'第二城市'),( 3,“第三城市”)]
我尝试遍历holiday_data_object和database_list以检查重复值,但最终得到了相同的输出模式。
答案 0 :(得分:2)
问题在于您的附加逻辑。每次获得新项目时,都将 entire 软件包列表添加到“数据库”中。因此,第一次只添加新软件包。第二次,您添加第一个和第二个程序包。第三次,添加所有三个软件包。
在每次迭代中仅添加最新的软件包。或者,将它们全部收集到您的软件包列表中,然后在用户输入n
之后将它们添加到数据库中,仅 。两者都造成您的问题。