【发布时间】:2021-04-06 17:32:15
【问题描述】:
我目前正在使用 while True 循环,但是如果相同的错误重复 3 次,请告诉我如何退出 while True 语句。我用python。
【问题讨论】:
-
代码在哪里?
-
代码太长,无法附加
-
模块retrying
标签: python while-loop try-catch
我目前正在使用 while True 循环,但是如果相同的错误重复 3 次,请告诉我如何退出 while True 语句。我用python。
【问题讨论】:
标签: python while-loop try-catch
您只需在循环外部声明一个变量并将其初始化为 0,每次循环迭代时将其递增 1,并且您的 while 循环会在小于 3 时进行迭代
i = 0
while i < 3:
print(i)
i += 1
编辑:我刚刚意识到你说的是真的 看看这个 What does "while True" mean in Python?
如果必须使用 while true 则使用 if 语句检查 i >=3 是否为真,然后使用 break 语句退出循环
【讨论】:
您可以添加一个变量来跟踪最后一个错误的类型,以及一个用于记录发生次数的计数器,如果出现不同类型的错误,该计数器会重置。如果计数器达到 3,则相应地退出。
last_exception, counter = None, 0
while True:
try:
# some error here
raise ValueError
except Exception as e:
if type(e) is not last_exception:
last_exception, counter = type(e), 0
counter += 1
if counter == 3:
break
【讨论】:
try块中,在容易出错的代码之后,添加counter = 0。如果代码成功运行,则连续错误计数器复位。编辑:除非您的意思是您的代码可能会引发不同的错误,并且如果最后 3 个错误相同,您希望循环终止,那么请编辑您的问题,我会相应地回答。它只涉及一些额外的跟踪。