gpt4 book ai didi

python - 如何在循环和每次迭代的条件中返回一个值?

转载 作者:行者123 更新时间:2023-12-01 00:41:57 25 4
gpt4 key购买 nike

我有以下功能check_overload(...)我在其中检查链接是否过载或未使用下面显示的参数。

def check_overload(SR_path, Router_1, Router_2, Router_3, Router_4, step, capacity):
iterations_array = number_iteration_tunnels(SR_path)
load_tunnels = bandwidth_tunnel(SR_path, Router_1, Router_2, Router_3, Router_4)
global overload_point
overload_point = np.zeros(len(iterations_array))
for i in range(len(iterations_array)):
if load_tunnels[i] >= capacity - (iterations_array[i][1] * step):
print "Link is overloaded"
overload_point = load_tunnels[i] - step
return overload_point
else:
print "Link is not overloaded"
return 0

首先,我计算 SR_path 的每个元素的迭代次数在函数 number_iteration_tunnels(..) 中。然后,使用该函数创建的数组iterations_array ,我执行一个循环来导航该数组。

我的目标是在每次迭代中返回 overload_point如果满足条件,否则返回 0。我面临的问题是,使用此实现,该函数仅返回明显的值。我找不到一种方法来实现我的目标。

最佳答案

解决方案1

  • 您可以使用 yield 实现提到的行为。
  • 以下示例尝试重现您的解决方案。
def check_overload(SR_path, Router_1, Router_2, Router_3, Router_4, step, capacity):
iterations_array = number_iteration_tunnels(SR_path)
load_tunnels = bandwidth_tunnel(SR_path, Router_1, Router_2, Router_3, Router_4)
global overload_point
overload_point = np.zeros(len(iterations_array))
for i in range(len(iterations_array)):
if load_tunnels[i] >= capacity - (iterations_array[i][1] * step):
print "Link is overloaded"
overload_point = load_tunnels[i] - step
yield overload_point
else:
print "Link is not overloaded"
yield 0

for result in check_overload(*args):
print(result) # or do whatever you want.

解决方案2

  • 使用列表来存储结果。
def check_overload(SR_path, Router_1, Router_2, Router_3, Router_4, step, capacity):
res = []
iterations_array = number_iteration_tunnels(SR_path)
load_tunnels = bandwidth_tunnel(SR_path, Router_1, Router_2, Router_3, Router_4)
global overload_point
overload_point = np.zeros(len(iterations_array))
for i in range(len(iterations_array)):
if load_tunnels[i] >= capacity - (iterations_array[i][1] * step):
print "Link is overloaded"
overload_point = load_tunnels[i] - step
res.append(overload_point)
else:
print "Link is not overloaded"
res.append(0)
return res

for result in check_overload(*args):
print(result) # or do whatever you want.

关于python - 如何在循环和每次迭代的条件中返回一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57277559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com