Python-在某个if循环后重复代码的某一部分

Python-在某个if循环后重复代码的某一部分,python,for-loop,repeat,Python,For Loop,Repeat,我正在为CFD可视化程序编写一个脚本,该程序与python有接口。 我创建了一个通用对话框,用户可以在其中输入一些值。现在,如果输入为false(这只是意味着一个变量大于另一个变量),我想重复该对话框: 在a.getValues()中,存储了之前的通用对话框的值。现在在最后一节中,如果我想跳回之前的通用对话框。换句话说,我想从某一行开始重复代码,这样用户就可以在之前的通用对话框中重复输入“step_begin”和“step_end”,这怎么可能呢 编辑/ 如果用户在通用对话框中单击“确定”,则r

我正在为CFD可视化程序编写一个脚本,该程序与python有接口。 我创建了一个通用对话框,用户可以在其中输入一些值。现在,如果输入为false(这只是意味着一个变量大于另一个变量),我想重复该对话框:

a.getValues()
中,存储了之前的通用对话框的值。现在在最后一节中,如果我想跳回之前的通用对话框。换句话说,我想从某一行开始重复代码,这样用户就可以在之前的通用对话框中重复输入“step_begin”和“step_end”,这怎么可能呢

编辑/
如果用户在通用对话框中单击“确定”,则ret将获得值1如果用户单击“取消”,则ret将获得值0,我认为您应该在没有得到预期结果的情况下重复整个部分

while True:
    a = CeiQtGenericDialog(items,None,"Save evaluation","Ok","Cancel")
    ret = a.doit()

    if (ret < 0): 
        break # if cancel dialog will not proceed data analysis
    for i in a.getValues():
        if (i=='step_begin'):
            begin = a.getValue(i)
        if (i=='step_end'):
            end = a.getValue(i)

    if (begin < end):
        break # if everything is ok move out 
    items2 = []
    items2.append(['text',ITEM_TEXT,"Start timestep must be smaller than end timestep!!",""])
    a = CeiQtGenericDialog(items2,None,"Error","Ok","Cancel")
    ret = a.doit()
        if ret < 0:
           break # if cancel dialog will not proceed data analysis
为True时:
a=CeiQtGenericDialog(项,无,“保存评估”、“确定”、“取消”)
ret=a.doit()
如果(ret<0):
中断#如果取消对话框将不继续数据分析
对于a.getValues()中的i:
如果(i=='step_begin'):
begin=a.getValue(i)
如果(i==“步骤结束”):
end=a.getValue(i)
如果(开始<结束):
休息#如果一切正常,就搬出去
项目2=[]
追加(['text',ITEM_text,“开始时间步必须小于结束时间步!!”,“”])
a=CeiQtGenericDialog(项2,无,“错误”、“确定”、“取消”)
ret=a.doit()
如果ret<0:
中断#如果取消对话框将不继续数据分析

我将使用while循环,如下所示:

begin = 0
end = -1
ret = 1
while (begin > end and ret > 0):
    items = []
    items.append(['text',ITEM_TEXT,"Automatically save the evaluation in data file(s)\n",""])
    items.append(['text',ITEM_TEXT,"Determine the range of timesteps that you want to save:",""])
    items.append(['step_begin',ITEM_INT,"Start timestep:","Start timestep",first_step,first_step,timesteps])
    items.append(['step_end',ITEM_INT,"End timestep:","End timestep",timesteps,first_step,timesteps])
    a = CeiQtGenericDialog(items,None,"Save evaluation","Ok","Cancel")
    ret = a.doit()

    if (ret > 0):
        for i in a.getValues():
            if (i=='step_begin'):
                begin = a.getValue(i)
            if (i=='step_end'):
                end = a.getValue(i)

        if (begin > end):
            items2 = []
            items2.append(['text',ITEM_TEXT,"Start timestep must be smaller than end timestep!!",""])
            a = CeiQtGenericDialog(items2,None,"Error","Ok","Cancel")
            ret = a.doit()

请正确缩进代码。对不起,我是python新手。。。但是我认为这个标识是正确的,至少python会一直运行代码直到最后一个if语句。难道你不想一直要求用户输入直到值有效吗?我认为
a.getValue
是用户输入的地方。不,对不起,这可能没有很好地解释!a、 getValues()获取之前泛型对话框的值,并将它们提供给我的下一个函数、循环或其他任何函数
begin = 0
end = -1
ret = 1
while (begin > end and ret > 0):
    items = []
    items.append(['text',ITEM_TEXT,"Automatically save the evaluation in data file(s)\n",""])
    items.append(['text',ITEM_TEXT,"Determine the range of timesteps that you want to save:",""])
    items.append(['step_begin',ITEM_INT,"Start timestep:","Start timestep",first_step,first_step,timesteps])
    items.append(['step_end',ITEM_INT,"End timestep:","End timestep",timesteps,first_step,timesteps])
    a = CeiQtGenericDialog(items,None,"Save evaluation","Ok","Cancel")
    ret = a.doit()

    if (ret > 0):
        for i in a.getValues():
            if (i=='step_begin'):
                begin = a.getValue(i)
            if (i=='step_end'):
                end = a.getValue(i)

        if (begin > end):
            items2 = []
            items2.append(['text',ITEM_TEXT,"Start timestep must be smaller than end timestep!!",""])
            a = CeiQtGenericDialog(items2,None,"Error","Ok","Cancel")
            ret = a.doit()