Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python使用128个if语句_Python_Python 3.x_Dataframe_Tkinter_Checkbox - Fatal编程技术网

Python使用128个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个列表并执行不同的操作,所以如果没有重复的日志或

我有一个tkinter应用程序,我正在工作,它有一个按钮,当按下按钮时会触发一个功能。我还有大约7个复选框,当选中时,它会将自己的变量从0更改为1

在函数中,我有一组if语句,它们通过复选框的每个组合执行和操作。这个问题是因为复选框可以有两种状态,off(0)和on(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梯形图
,不如使用
嵌套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:
  ...