【发布时间】:2015-09-12 21:27:00
【问题描述】:
我遇到了一个 Python 问题。我试图不止一次地重复一个 for 循环。我在循环中有一个条件,如果条件为真,循环应该重新开始。我只需要一个 for 循环的解决方案。例如:
for i in range (10):
if i==4:
i=0
print(i)
很遗憾,这不起作用。
输出应该是:0 1 2 3 0 1 2 3 0 1 2 3...
【问题讨论】:
-
OP,一般来说,您尝试做的事情听起来是个坏主意。结构化编程通常不适用于
goto、continue和break,更不用说随机摆弄循环索引了。关于这个主题有一个famous historic paper。另外,请考虑print [x % 4 for x in range(10)]以获得更 Pythonic 的方式 :) -
@TobiaTesan
continue和break有什么问题? -
@mkrieger1 也许
filter和next是更好的抽象。 -
@mkrieger1:关于它的文献很多,从 EWD 论文到 this one。 TL;DR 主要争论点是,提前退出通常会破坏结构化编程,而结构化编程是最干净的,只有 1 个入口和 1 个退出点。当然,有时
break在这里实际上是一个好主意,但我怀疑 OP 暂时远离它们会更好。 -
我用while试过了,但是TLE,所以我的算法可能会有问题