社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

C.Koca • 4 年前 • 1466 次点击  

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

考虑下面的代码:

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 循环中的子句永远不会执行。因此,函数从不在循环中返回任何内容,而是在最后一行返回某些内容。如果 如果 循环中的子句被执行, 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 0 并且不检查函数的返回值。
  • 使用标志变量。
  • 扩展 self.trial 带有非常小的负数的数组,如 -1e99 .

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

我的问题是:

有这样一个保留的词吗 回来 这将以我想要的方式工作,即终止函数?

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

谢谢

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129366
文章 [ 1 ]  |  最新文章 4 年前
Grismar
Reply   •   1 楼
Grismar    4 年前

你可以查一下 for 循环没有遇到错误 break 具有 else ,这似乎就是你想要的。

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 仍将具有循环中在 打破 还有 其他的 只有在 打破 从不执行。

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