我有这个代码循环遍历一个集合,并检查集合中的某个项目是否是一个文件夹,如果是,它会检查它是哪个文件夹,然后继续执行基于它是什么文件夹。我不确定如何解释为什么有两个循环,所以我希望你们可以看看它并理解我为什么这样做,因为没有它,它就无法工作。是否有替代此代码看起来更整洁,更易于理解的代码?
你可以看到为什么我想知道是否可以清理...
在这种情况下,neededdirs的值是
set(['Pictures', 'Downloads', 'Public', 'Desktop'])
和这里的这就需要将主代码清理干净。
neededdirs = folders.findKeyDir('active') #declares the set
for x in neededdirs: #starts the main loop
for y in neededdirs: #starts the second loop
if folders.getObject(neededdirs, y, 'bool'): #checks to see if the the option in the set is a folder.
neededname = folders.getObject(neededdirs, y, 'name') #retrieves the name of the item in the set.
if neededname == "Desktop": #this and all elif's after just check its name.
self.folderheader1.setText(_translate("MainWindow", "Status: Active", None)) #this, the line after, and all others like it just change the text on an item if it evaluates to true.
self.folderactive.setChecked(True)
elif neededname == "Documents":
self.folderheader2.setText(_translate("MainWindow", "Status: Active", None))
self.folderactive_2.setChecked(True)
elif neededname == "Downloads":
self.folderheader3.setText(_translate("MainWindow", "Status: Active", None))
self.folderactive_3.setChecked(True)
elif neededname == "Music":
self.folderheader4.setText(_translate("MainWindow", "Status: Active", None))
self.folderactive_4.setChecked(True)
elif neededname == "Pictures":
self.folderheader1_2.setText(_translate("MainWindow", "Status: Active", None))
self.folderactive_5.setChecked(True)
elif neededname == "Public":
self.folderheader1_3.setText(_translate("MainWindow", "Status: Active", None))
self.folderactive_6.setChecked(True)
elif neededname == "Templates":
self.folderheader1_4.setText(_translate("MainWindow", "Status: Active", None))
self.folderactive_7.setChecked(True)
elif neededname == "Videos":
self.folderheader1_5.setText(_translate("MainWindow", "Status: Active", None))
self.folderactive_8.setChecked(True)
在此先感谢。
您的问题的简短答案是“是的”。你可能会发现[这篇文章在Python中的“switch”](http://bytebaker.com/2008/11/03/switch-case-statement-in-python/)鼓舞人心地做得更好。 – Floris
你的代码根本不使用外层循环定义的'x'变量。 –
既然你说这个方法有效,你应该将其发布在[codereview](http://codereview.stackexchange.com/)上。 SO更多地处理_problems_编码,其中CR被明确设置以改善工作代码。 – iCodez