重试失败的循环Python

时间:2018-08-22 12:24:38

标签: python loops while-loop

我正在运行一个针对给定N值运行模拟的代码。我试图添加一个while循环,以在失败的新N值下重试该循环。 例如,如果N = 10失败,我希望它增加到N = 20,依此类推,直到失败为止。目前,我有:

N=0
while True:
    N=N+10
    simulation(N)
    break

我不能完全确定我是否正确使用了“ True”(我以为它可以运行直到它不会失败?)。我看过其他帖子,问类似的事情,解决方案使用异常,但是那时候他们已经知道确切的位置将发生故障,而我不知道N的值将失败。

2 个答案:

答案 0 :(得分:4)

取决于您所说的“失败”。可能是

N=0
while True:
    N = N+10
    try:
       simulation(N)
    except SomeError:
       pass
    else:
       break

那是

  1. 调用模拟
  2. 如果出现错误(except),请进行下一次迭代(使用pass
  3. 如果成功(else)停止循环

请注意,Python中的else可以与tryfor一起使用,但是其含义与每种语言中出现的if-else完全不同。

答案 1 :(得分:0)

如果您知道simulation函数的返回值,则可以将其用作检查其是否通过

N=0
while result:
    N=N+10
    result = simulation(N)

假设simulation在通过时将返回False,否则将返回True。您可以否决支票是否是其他方式。您应该对N进行另一次边界检查,以退出while循环,以防simulation对于N的任何值都没有通过。

我还建议捕获任何异常,以避免类似于上述答案的不正常退出。