在True循环中突破嵌套

时间:2019-01-06 17:35:45

标签: python

我正在使用抓网脚本运行while True:循环。我希望刮板在增量循环中运行,直到遇到某个错误。一般的问题是关于当满足特定条件时如何退出True循环。像这样的代码将永远输出第一次运行:

output 1;1
...
output 1;n

这是我的代码的最小可复制示例。

runs = [1,2,3]

for r in runs:
    go = 0
    while True:
        go +=1
        output = ("output " + str(r) + ";" +str(go))
        try:
            print(output)
        except go > 3:
            break

所需的输出是:

output 1;1
output 1;2
output 1;3
output 2;1
output 2;2
output 3;3
output 3;1
output 3;2
output 3;3
[done]

1 个答案:

答案 0 :(得分:5)

您在这里不需要tryexcept。保持简单,只需在while变量上使用简单的go条件。在这种情况下,您甚至不需要break,因为一旦go>=3,条件将为False,您将退出while循环并重新启动while循环以r的下一个值。

runs = [1,2,3]

for r in runs:
    go = 0
    while go <3:
        go +=1
        output = ("output " + str(r) + ";" +str(go))
        print(output)

输出

output 1;1
output 1;2
output 1;3
output 2;1
output 2;2
output 2;3
output 3;1
output 3;2
output 3;3

替代while :如@chepner所建议,您甚至不需要while,最好通过go上的for循环作为

for r in runs:
    for go in range(1, 4):
        output = ("output " + str(r) + ";" +str(go))
        print(output)