首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python -在某个if循环之后重复代码的某个部分

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

Stack Overflow用户
提问于 2013-11-06 07:24:24
回答 2查看 261关注 0票数 1

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

代码语言:javascript
运行
复制
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()

        if (ret > 0):
            ????

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

编辑/如果用户在泛型对话框中单击OK,ret将获得值1,如果用户单击cancel ret获得值0

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-06 08:02:38

我将使用while循环如下:

代码语言:javascript
运行
复制
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()
票数 0
EN

Stack Overflow用户

发布于 2013-11-06 07:51:26

我认为你应该在没有得到预期结果的情况下重复这一段。

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19806293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档