在Python中重新启动当前迭代

时间:2016-02-24 12:49:35

标签: python python-2.7

我想在testing12(bad_order, order) == True时重新启动第一个for循环的当前迭代。我试图使用continue但它跳过迭代,这不是我想要的。

bad_order = []
order = []
for iteration in range(0, 10):

    args = []
    print("\n  def test%d(self):" % (iteration))

    for input in range(num_arguments):

        args.append(pick_type())
        order = args

    if testing12(bad_order, order) == True:
        continue

    try:
        result = target(*args)
        code = test_to_string(target, args, result)

    except Exception as error:
        bad_order = args
        code = test_to_string_exc(target, args, error)

3 个答案:

答案 0 :(得分:3)

你可以添加一个内部while循环,它实际上会重复外循环迭代,直到它退出。如果你可以在while测试中输入重复条件,那么你就完成了:

for iteration in range(0, 10):
    while some_condition:
        ...

如果没有,您可以使用while True循环,在底部放置一个无条件break,并使用continue重复:

for iteration in range(0, 10):
    while True:
        ...
        if continue_condition:
            continue
        ...
        break

答案 1 :(得分:1)

你也可以改变:

for iteration in range(0,10):

iteration =0 
while iteration < 10 :

并且仅在不需要重复时递增迭代

答案 2 :(得分:0)

你只需要添加一个在迭代结束时中断的无限while循环。

然后您可以根据需要重新启动迭代。

bad_order = []
order = []
for iteration in range(0, 10):
    while True: #
        args = []
        print("\n  def test%d(self):" % (iteration))

        for input in range(num_arguments):
            args.append(pick_type())
            order = args

        if testing12(bad_order, order) ==  True:
            continue

        try:
            result = target(*args)
            code = test_to_string(target, args, result)
        except Exception as error:
            bad_order = args
            code = test_to_string_exc(target, args, error)

        break #