我正在创建一个化学模拟器类型程序,它使用42种不同的反应物质,当2种物质组合时产生输出。每个物种都具有例如锂是1,钠是2,钾是3.我有一个def()语句设置为在调用时设置这些值,如下所示。
def choselithium():
global firstchoice
global secondchoice
global ChoosingAgain
if ChoosingAgain == 0:
firstchoice = 1
vp_start_gui_whatnow()
if ChoosingAgain == 1:
secondchoice = 1
vp_start_gui_areyousure()
这些12行使用42次后,这显然变得非常低效,直到这些简单的语句占用超过400行代码。有没有办法可以通过使用类或类似的对象将它们缩减为更少的行?在这种情况下,vp_start_gui_whatnow()和vp_start_gui_areyousure()启动菜单,显示刚刚做出的选择,使用下面的sql语句从数据库中选择文本值:
def getfirstchoice():
global output
sqlcommand2 = "SELECT ChoiceDesc FROM Choices WHERE Choice_ID = ?"
result2 = c.execute(sqlcommand2, (firstchoice,))
result2 = [x for y in result2 for x in y]
output = result2[0]
return output
def getsecondchoice():
global output2
sqlcommand3 = "SELECT ChoiceDesc FROM Choices WHERE Choice_ID = ?"
result3 = c.execute(sqlcommand3, (secondchoice,))
result3 = [x for y in result3 for x in y]
output2 = result3[0]
return output2