带循环的Python函数

带循环的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

我是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/((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
将函数转换为生成器。