我有這個代碼循環遍歷一個集合,並檢查集合中的某個項目是否是一個文件夾,如果是,它會檢查它是哪個文件夾,然後繼續執行基於它是什麼文件夾。我不確定如何解釋爲什麼有兩個循環,所以我希望你們可以看看它並理解我爲什麼這樣做,因爲沒有它,它就無法工作。是否有替代此代碼看起來更整潔,更易於理解的代碼?
你可以看到爲什麼我想知道是否可以清理...
在這種情況下,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