带循环的Python函数
我是python新手,我正在尝试在预定义的范围内创建一个多变量定义的函数循环。然而,循环似乎从未在整个范围内持续。所需的输出将是两个列表:我定义的范围(在本例中为0-23)和我调用的函数的输出带循环的Python函数,python,Python,我是python新手,我正在尝试在预定义的范围内创建一个多变量定义的函数循环。然而,循环似乎从未在整个范围内持续。所需的输出将是两个列表:我定义的范围(在本例中为0-23)和我调用的函数的输出 max_t = 24 user_t = range(max_t) user_qi = 500 user_b = 1.20 user_di = 0.70 def my_funct(t, qi, b, di): for t in range(max_t): return qi
max_t = 24
user_t = range(max_t)
user_qi = 500
user_b = 1.20
user_di = 0.70
def my_funct(t, qi, b, di):
for t in range(max_t):
return qi/((1.0+b*di*t)**(1.0/b))
my_funct(user_t, user_qi, user_b, user_di)
您的循环只运行了一次,因为您将立即从它返回
result_list = []
range_list = [i for i in range(max_t)]
def my_funct(t, qi, b, di):
for t in range(max_t):
result_list.append(qi/... whatever calculation)
return (result_list, range_list)
在代码中,当程序输入
my_funct
并执行此行时:
return qi/((1.0+b*di*t)**(1.0/b))
由于返回
,程序立即退出。预期行为将使用列表完成。您可以将值附加到它并返回它。因此,这将是:
max_t = 24
user_t = range(max_t)
user_qi = 500
user_b = 1.20
user_di = 0.70
def (t, qi, b, di):
result = []
for t in range(max_t):
result.append(qi/((1.0+b*di*t)**(1.0/b)))
return result
r = my_funct(user_t, user_qi, user_b, user_di)
print(r)
return
将立即终止该功能;为循环返回在中计算的第一个值。您应该将值附加到循环内的列表中,并在循环完成后返回。更高级的方法是使用yield
而不是return
将函数转换为生成器。