Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 3.x Python 3:如果条件未满足,则跳到下一个迭代-循环中的循环_Python 3.x_Loops_Iteration_Next - Fatal编程技术网

Python 3.x Python 3:如果条件未满足,则跳到下一个迭代-循环中的循环

Python 3.x Python 3:如果条件未满足,则跳到下一个迭代-循环中的循环,python-3.x,loops,iteration,next,Python 3.x,Loops,Iteration,Next,我有一个循环中的一个循环,如下所示: iGen = (i for i in range(1,10)) for i in iGen: for j in range(1,10): some operations if certain operation not fulfilled: next(iGen) 因此,例如,如果i=5且条件未满足,则应取消j循环,并且i应迭代到6 然而,这是行不通的。有没有人能提出为什么这个逻辑会有问题? 这是真正的代码。上

我有一个循环中的一个循环,如下所示:

iGen = (i for i in range(1,10))
for i in iGen:
   for j in range(1,10):
      some operations
      if certain operation not fulfilled:
         next(iGen)
因此,例如,如果
i=5
且条件未满足,则应取消
j
循环,并且
i
应迭代到6

然而,这是行不通的。有没有人能提出为什么这个逻辑会有问题? 这是真正的代码。上面的伪代码只是为了让逻辑更清晰

array = [];
for k in range(1, 20):
    y=2**k*(2**(k+1)-1)
    array.append(y)

iGen = (i for i in range(0, len(array)))
for i in iGen:
    x = 1
    for j in range(2, array[i]):
        if array[i] % j == 0:
            g = x
            x = x + j
            if x / g < 2:
                next(iGen)

    if x == array[i]:
        print(array[i])
array=[];
对于范围(1,20)内的k:
y=2**k*(2**(k+1)-1)
array.append(y)
iGen=(范围(0,len(数组))中的i表示i)
对于iGen中的i:
x=1
对于范围(2,数组[i])中的j:
如果数组[i]%j==0:
g=x
x=x+j
如果x/g<2:
下一个(伊根)
如果x==数组[i]:
打印(数组[i])

您想使用中断。这将打破您的j循环,并继续进行i循环中的下一项

iGen = (i for i in range(1,10))
for i in iGen:
   for j in range(1,10):
      some operations
      if certain operation not fulfilled:
         break

你想休息一下。这将打破您的j循环,并继续进行i循环中的下一项

iGen = (i for i in range(1,10))
for i in iGen:
   for j in range(1,10):
      some operations
      if certain operation not fulfilled:
         break


可能重复的?嘿@Jerrybibo continue将迭代j而不是i对吗?不过我想重复一下,不,我只是试了一下,你是对的!这解决了我的问题!!另外,您可以用
范围(0,len(数组))
替换
(范围(0,len(数组))
。不需要包装生成器。是的,已经这样做了,但是谢谢你这么说。可能重复的?嘿@Jerrybibo continue会迭代j,而不是我,对吗?不过我想重复一下,不,我只是试了一下,你是对的!这解决了我的问题!!另外,您可以用
范围(0,len(数组))
替换
(范围(0,len(数组))
。不需要包装发电机。是的,已经这样做了,但是谢谢你这么说。就要回答这个问题了<代码>下一步仅用于检索下一项。它不会停止逻辑流程。是的,谢谢。或者您可以像Jerrybibo建议的那样使用continue。@OcK,continue将继续处理j循环中的下一项。i-loop中的下一个项目将继续中断。完全正确,我只是在测试它并想添加它,谢谢澄清!!是的,没问题。谢谢我正要回答这个问题<代码>下一步仅用于检索下一项。它不会停止逻辑流程。是的,谢谢。或者您可以像Jerrybibo建议的那样使用continue。@OcK,continue将继续处理j循环中的下一项。i-loop中的下一个项目将继续中断。完全正确,我只是在测试它并想添加它,谢谢澄清!!是的,没问题。谢谢