这是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
答案 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=' ')