Python使用128个if语句
我有一个tkinter应用程序,我正在工作,它有一个按钮,当按下按钮时会触发一个功能。我还有大约7个复选框,当选中时,它会将自己的变量从0更改为1 在函数中,我有一组if语句,它们通过复选框的每个组合执行和操作。这个问题是因为复选框可以有两种状态,off(0)和on(1),有7个复选框-如果我们用2到7的幂来计算每个组合,那么我需要写出128个if语句 我还考虑过编写7 if语句来检查每个复选框的每个状态,然后转到下一个状态,但因为我需要循环遍历2个列表并执行不同的操作,所以如果没有重复的日志或我需要的详细信息,很难记录每个阶段发生的事情 有更好的方法吗 任何帮助都会很好,谢谢 其中一个if语句的示例Python使用128个if语句,python,python-3.x,dataframe,tkinter,checkbox,Python,Python 3.x,Dataframe,Tkinter,Checkbox,我有一个tkinter应用程序,我正在工作,它有一个按钮,当按下按钮时会触发一个功能。我还有大约7个复选框,当选中时,它会将自己的变量从0更改为1 在函数中,我有一组if语句,它们通过复选框的每个组合执行和操作。这个问题是因为复选框可以有两种状态,off(0)和on(1),有7个复选框-如果我们用2到7的幂来计算每个组合,那么我需要写出128个if语句 我还考虑过编写7 if语句来检查每个复选框的每个状态,然后转到下一个状态,但因为我需要循环遍历2个列表并执行不同的操作,所以如果没有重复的日志或
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梯形图
,不如使用嵌套if
语句?
像
从你在这里写的内容,很难判断你到底在尝试什么。如果您想添加一段已有代码,我们可以更好地帮助您。您可能需要给出一个示例,说明
If
块中发生的情况,通过这种方式,可以更容易地帮助确定是否有简化的方法,您是希望根据这些值执行128项不同的操作,还是某些复选框有意义?了解复选框的作用将非常有用,因为您当前的代码没有告诉我们任何信息。去写一个最小的可验证的完整示例,完成后再回来,因此还不完全清楚是否有一些逻辑涉及特定的复选框,这些复选框在确定if
块中发生了什么时是一致的。e、 g.拥有varad.get()==1
是否总是意味着您执行pricingSchedule
位?我可能会马上做的一件事是在顶部创建元组,比如cboxes=(varsd.get(),varad.get(),vared.get(),varcn.get(),varpn.get(),varak.get(),varab.get())
然后在任何if语句中使用它,比如:if-cboxes==(1,0,0,0,0)
听起来您只需要7个连续的if语句,如果选中对应的复选框,则每个if语句都将运行
if a:
if b:
if c:
...
else:
...
else:
...
else:
...