python - Python 大约 128 个 if 语句
问题描述
我有一个我正在处理的 tkinter 应用程序,它有一个按钮,当按下它时会触发一个功能。我还有大约 7 个复选框,选中时会将其自己的变量从 0 更改为 1。
在函数中,我有一堆 if 语句,它们遍历复选框的每个组合并执行和操作。问题是因为复选框可以有两种状态,关闭(0)和打开(1),有 7 个复选框 - 如果我们做 2 的 7 次方来计算每个组合,那就是 128 个 if 语句我需要写出去。
我还考虑过编写 7 个 if 语句来检查每个复选框的每个状态,然后转到下一个,但是因为我需要遍历 2 个列表并执行不同的操作,所以很难在不重复的情况下记录每个阶段发生的事情日志或我需要的详细信息。
有没有更好的方法来做到这一点?
任何帮助都会很棒,谢谢!
if 语句之一的示例
if 'PId' in df and 'CId' in df:
for i, w in zip(df['CId'], df['PId']):
if varsd.get() == 1 and varad.get() == 1 and vared.get() == 0
and varcn.get() == 0
and varpn.get() == 0 and varak.get() == 0 and varab.get() == 0:
for i, b, z in zip(df['CId'], df['PId'], df['NewStartDate']):
cd['startDate'] = re.sub('^[0-9]{4}-[0-9]{2}-[0-9]{2}', str(z),
cd['startDate'])
pd['pricingSchedule']['startDate'] = re.sub('^[0-9]{4}-[0-9]{2}-[0-9]{2}',
cd['startDate'], pd['pricingSchedule']['startDate'])
Few more bits
elif varsd.get() == 1 and varad.get() == 0 and vared.get() == 0 and varcn.get() == 0
and varpn.get() == 0 and varak.get() == 0 and varab.get() == 0:
for i, b, z in zip(df['CId'], df['PId'], df['NewStartDate']):
cd['startDate'] = re.sub('^[0-9]{4}-[0-9]{2}-[0-9]{2}', str(z),
cd['startDate'])
Few more bits
解决方案
而不是if-else ladder
,你为什么不使用nested if
语句?喜欢
if a:
if b:
if c:
...
else:
...
else:
...
else:
...
推荐阅读
- python-3.x - AttributeError:将字符串添加到 txt.file 时,“str”对象没有属性“write”
- c# - MSSQL 错误“底层提供程序在打开时失败”IIS 部署
- javascript - 如何获取对象数组中键的值具有特定字符的最后一项?
- java - 依赖实体处理的库或框架推荐
- javascript - 访问多个具有相同类名的 div 中的 img 标签或 src
- nginx - 使用自定义标头的 nginx 负载平衡上游哈希
- nestjs - 如何在 Jest 中模拟 NestJS 内置的 Logger
- fonts - 将 PS 文件(后记)转换为 PDF 时出现 GhostPDL 字体路径错误
- snowflake-cloud-data-platform - 有哪些选项可用于获取 Snowflake 中的主键列名称?
- python - PM4Py - 基于开始活动获取跟踪子集