python 中检查循环是否未执行的最佳方法

Best way in python to check if a loop is not executed

标题可能会产生误导,所以这里有一个更好的解释。

考虑以下代码:

def minimum_working_environment(r):
    trial=np.arange(0,6)[::-1]
    for i in range(len(trial)):
        if r>trial[i]:
            return i
    return len(trial)

我们看到如果r小于trial的最小元素,那么循环内的if子句永远不会执行。因此,该函数从不在循环中 returns 任何东西,而在最后一行 returns 任何东西。如果循环内的 if 子句被执行,return 终止代码,所以最后一行永远不会被执行。

我想实现类似的东西,但没有 return,即

def minimum_working_environment(self,r):
    self.trial=np.arange(0,6)[::-1]
    for i in range(len(self.trial)):
        if r>trial[i]:
            self.some_aspect=i
            break
    self.some_aspect=len(self.trial)

此处,break 中断循环但函数未终止。

我能想到的解决办法是:

第一种方法看起来不错,如果没有得到任何答案,我可能会实施它。第二个很无聊。第三个不仅无聊,而且可能会导致性能问题。

我的问题是:

是否有像 return 这样的保留字可以按照我想要的方式工作,即终止函数?

如果不是,最好的解决方案是什么?

谢谢!

您可以检查 for 循环没有 运行 进入带有 elsebreak,这似乎是您想要的。

import numpy as np


def minimum_working_environment(r):
    trial = np.arange(0, 6)[::-1]
    for i in range(len(trial)):
        if r > trial[i]:
            return i
    return len(trial)


def alternative(r):
    trial = np.arange(0, 6)[::-1]
    for i in range(len(trial)):
        if r > trial[i]:
            break
    else:
        i = len(trial)
    return i


print(minimum_working_environment(3))
print(minimum_working_environment(-3))

print(alternative(3))
print(alternative(-3))

结果:

3
6
3
6

这是有效的,因为循环控制变量 i 仍将具有它在 break 之后循环中的最后一个值,并且 else 仅在 break 从不执行。

然而,如果你只是想终止一个函数,你应该使用return。如果您确实需要知道循环是否完全完成(即没有中断)或者它是否提前终止,我提供的示例主要有用。它适用于您的示例,我认为正是这样,只是一个示例。