Python 2.7 长if语句的替代方案
我现在有一个很长的if语句,看起来很难看,我很确定这是不合适的。看起来像这样Python 2.7 长if语句的替代方案,python-2.7,if-statement,conditional,Python 2.7,If Statement,Conditional,我现在有一个很长的if语句,看起来很难看,我很确定这是不合适的。看起来像这样 if self.folderactive.isChecked: folders.createDir('Desktop') elif not self.folderactive.isChecked: folders.deleteDir('Desktop') if self.folderactive_2.isChecked: folders.createDir('Documents') elif
if self.folderactive.isChecked:
folders.createDir('Desktop')
elif not self.folderactive.isChecked:
folders.deleteDir('Desktop')
if self.folderactive_2.isChecked:
folders.createDir('Documents')
elif not self.folderactive_2.isChecked:
folders.deleteDir('Documents')
if self.folderactive_3.isChecked:
folders.createDir('Downloads')
elif not self.folderactive_3.isChecked:
folders.deleteDir('Downloads')
if self.folderactive_4.isChecked:
folders.createDir('Music')
elif not self.folderactive_4.isChecked:
folders.deleteDir('Music')
if self.folderactive_5.isChecked:
folders.createDir('Pictures')
elif not self.folderactive_5.isChecked:
folders.deleteDir('Pictures')
if self.folderactive_6.isChecked:
folders.createDir('Public')
elif not self.folderactive_6.isChecked:
folders.deleteDir('Public')
if self.folderactive_7.isChecked:
folders.createDir('Templates')
elif not self.folderactive_7.isChecked:
folders.deleteDir('Templates')
if self.folderactive_8.isChecked:
folders.createDir('Videos')
elif not self.folderactive_8.isChecked:
folders.deleteDir('Videos')
我该如何简化这个长长的条件列表呢?首先,您可以简化如下语句:
if self.folderactive.isChecked:
folders.createDir('Desktop')
elif not self.folderactive.isChecked:
folders.deleteDir('Desktop')
到
首先,您可以简化如下语句:
if self.folderactive.isChecked:
folders.createDir('Desktop')
elif not self.folderactive.isChecked:
folders.deleteDir('Desktop')
到
您应该使用关联数组:复选框编号作为索引,文件夹名称作为值。您应该使用关联数组:复选框编号作为索引,文件夹名称作为值。首先,所有
elif…
子句可以写成其他:
多个if。。else.
可以表示为for循环:
checkbox_directory_pairs = [
(self.folderactive, 'Desktop'),
(self.folderactive_2, 'Documents'),
(self.folderactive_3, 'Downloads'),
...
]
for checkbox, directory in checkbox_directory_pairs:
if checkbox.isChecked:
folders.createDir(directory)
else:
folders.deleteDir(directory)
首先,所有
elif…
子句都可以写成else:
多个if。。else.
可以表示为for循环:
checkbox_directory_pairs = [
(self.folderactive, 'Desktop'),
(self.folderactive_2, 'Documents'),
(self.folderactive_3, 'Downloads'),
...
]
for checkbox, directory in checkbox_directory_pairs:
if checkbox.isChecked:
folders.createDir(directory)
else:
folders.deleteDir(directory)
谢谢,经过一些小的调整,效果非常好。我必须将
if self.folderactive.isChecked:
更改为if checkbox.isChecked:
@josh,啊。。这是我的错误。我修正了密码。谢谢你的评论。谢谢,这是非常好的一些小调整。我必须将if self.folderactive.isChecked:
更改为if checkbox.isChecked:
@josh,啊。。这是我的错误。我修正了密码。谢谢你的评论。