我是编程和Python的新手。我编写了一个简单的随机报价生成器,将列表中的各种报价作为列表加载到字典中。然后,它随机选择一个列表,然后从列表中选择一个特定的报价,并将其输出到屏幕。它大部分已经完成,但是我正在寻找清理代码以使其更高效的方法。现在,我有一组14种不同的类别,用户可以从中进行选择以填充字典。这些类别选择中的每一个都调用一个函数来更新字典,并调用config.ini文件来保存用户首选项。这导致成百上千行几乎相同的代码,其中唯一的区别是所使用的特定类别和文件。我正在寻找一种重写它的方法,以便每次都可以重复使用相同的功能,并且只需传递正确的信息即可使其正常工作。我在下面发布了相关代码的摘要。我正在使用Python 3.6和TKinter。感谢您提供的任何帮助。
self.adversity = BooleanVar()
self.adv = Checkbutton(self, text = 'Adversity/Hardship', variable = self.adversity, command = self.update_adversity)
self.adv.grid(row = 1, column = 0, sticky = 'W', padx = 0, pady = 0)
if 'adversity' in quotes:
self.adversity.set(1)
elif 'adversity' not in quotes:
self.adversity.set(0)
def update_adversity(self):
if self.adversity.get() == True:
config.set('categories', 'adversity', 'True') # updates config file
with open('adversity.py', 'r', encoding = 'UTF8') as f:
new_quotes_added = f.readlines()
quotes['adversity'] = new_quotes_added
try:
del quotes['default']
config.set('categories', 'default', 'False') # updates config file
return quotes
except:
return quotes
elif self.adversity.get() == False:
config.set('categories', 'adversity', 'False') # updates config file
try:
del quotes['adversity']
if quotes == {}:
with open('default.py', 'r', encoding = 'UTF8') as f:
quotes['default'] = f.readlines()
config.set('categories', 'default', 'True') # updates config file
return quotes
else:
return quotes
except:
return quotes