突破嵌套而True循环

DIG*_*SUM 3 python

while True:在webscraping脚本中运行循环.我希望刮刀在增量循环中运行,直到遇到某个错误.一般的问题是如何在某个条件匹配时突破一段时间的True循环.代码就是永远输出第一次运行:

output 1;1
...
output 1;n
Run Code Online (Sandbox Code Playgroud)

这是我的代码的最小可重现的示例.

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
Run Code Online (Sandbox Code Playgroud)

所需的输出是:

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]
Run Code Online (Sandbox Code Playgroud)

She*_*ore 5

你不需要tryexcept这里.保持简单,只需whilego变量使用简单的条件.在这种情况下,你甚至不需要a,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)
Run Code Online (Sandbox Code Playgroud)

产量

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
Run Code Online (Sandbox Code Playgroud)

替代消磨:由于@chepner建议,你甚至都不需要while,并与超过更好的for循环go

for r in runs:
    for go in range(1, 4):
        output = ("output " + str(r) + ";" +str(go))
        print(output)
Run Code Online (Sandbox Code Playgroud)