如何在Python中影响内部循环的外部循环变量?

时间:2016-08-08 18:41:35

标签: java python for-loop conditional-statements

这是Java:

for(int i=0; i<10; i++){
    while(i%3!=0)
        i++;
    System.out.print(i + " ");
}

这将输出:

  

0 3 6 9

我正在尝试在Python 3中实现类似的代码块。我无法做到。

在外部循环中,我不能使用范围,因为它导致整个列表上的迭代我在某处读到了我认为。所以,我正在尝试下面,但它无法危险地运行,无限运行。

i=1
while i<=10:
    while i%3 is not 0:
        i+=1
    print('run')

我可以通过删除内部while并将代码更改为i+=3来实现目标。但我试图制定的计划具有重要条件,因此它必须存在。 必须有两个循环并且基于内循环条件匹配,我正在递增迭代变量,所以当我中断并处理一些程序输出时,那么父循环应该从我在内循环中停止的位置开始迭代。 以上只是我想到的一个分享问题的例子。我需要建议如何复制Python中的Java代码中描述的更改。

更新:以下是我尝试此操作的程序:https://softwareengineering.stackexchange.com/questions/327908/finding-total-number-of-subarrays-from-given-array-of-numbers-with-equal-max-and

5 个答案:

答案 0 :(得分:3)

您的示例中不需要两个循环。

while i<=10:
  if i%3 == 0:
    print(i+ " ")
  i++

您的代码无限运行,因为当它等于3

时,您永远不会增加i

答案 1 :(得分:2)

i = 0
while i < 10:
    while i % 3 is not 0:
        i += 1
    print(str(i) + " ")
    i += 1

答案 2 :(得分:1)

另一种选择是使用列表理解:

print(' '.join([i for i in range(10) if i % 3 == 0])

答案 3 :(得分:1)

行。党的另一个建议。可能对您的实际任务有所帮助:

g = iter(range(10))
for i in g:
    while i%3 is not 0:
        i = next(g)
    print(i)

主要区别在于,当内部循环超出为迭代器定义的范围(即外部循环)时,这将引发StopIteration异常。可能是想要的东西,也可能不是。

答案 4 :(得分:0)

根据我对OP问题的评论:

for i in range(0, 11, 3): print(i, end=' ')