从循环中的不同函数开始循环的新迭代[python]

时间:2014-04-07 19:53:10

标签: python for-loop iteration

如何在不使用继续或休息的情况下开始下一个i?

def function_in_main():
    if #something happens:
        #start new next iteration for the loop in the main function

def main():
    n = 1
    for i in range(len(alist)): 
        print ('step ', n)

        function_in_main()

        n += 1
main()

输出应该看起来像:

第1步

#if或直到发生事情

第2步

4 个答案:

答案 0 :(得分:1)

当if语句为true时,只需返回function_in_main即可。当它返回时,循环将继续进行下一次迭代,然后重新调用function_in_main。

答案 1 :(得分:0)

以下是一个例子:

def function_in_main(x):
    return x=='Whopee'         # will return True if equal else False

def main():
    alist=['1','ready','Whopee']
    for i,item in enumerate(alist, 1): 
        print ('step {}, item: "{}" and {}'.format(i,item,function_in_main(item)))     

main()

打印:

step 1, item: "1" and False
step 2, item: "ready" and False
step 3, item: "Whopee" and True

请注意使用enumerate而不是手动保留计数器。

答案 2 :(得分:0)

也许尝试提出异常:

def function_in_main():
    if #something happens:
        raise Exception

def main():
    n = 1
    for i in range(len(alist)): 
        print ('step ', n)
        try:
            x()
        except Exception:
            continue

        n += 1
main()

您可以指定或制作任何类型的例外。

答案 3 :(得分:0)

当然你没有想到一个while循环或什么?看到你得到的东西有点难......

def your_function():
    #…do some work, do something to something else
    if something_is_true:
        return True
    else:
        return False

def main():
    condition = True
    for i in range(len(your_list)):
        while condition:
            print "Step: %d" % i
            your_function()

仅当your_function返回False时,main中的循环才会继续,否则它将保持在while循环内。