我的问题是我想: 然后我希望它在calc_energy函数中得到360次评估 然后存储结果,这样我可以计算年平均值,我想计算能量平均值.. 我应该调用函数而不是返回def_decide(v)??? 有人可以帮助我进入正确的轨道吗?
def calc_v(latitud):
for t in range(0,360):
v=(23.5*math.sin(math.pi*(t-80)/180)+90-latitud)/90
decide_v(v):
def decide_v(v):
if 0<v<1:
return(v**2)
if v>=1:
return(1)
if v<=0:
return(0)
def calc_energy(v):
W=self.area*random(0,1)*self.sundigit*v
return W
def sort(self,W):
W+=100/360
答案 0 :(得分:3)
您可以从calc_v
创建一个生成器,然后像使用值列表一样使用它(注意yield
而不是return
):
def calc_v(latitude):
for t in range(0,360):
v=(23.5*math.sin(math.pi*(t-80)/180)+90-latitude)/90
yield v
def decide_v(v):
if 0<v<1:
return v**2
elif v>=1:
return 1
else:
return 0
for v in calc_v(latitude):
print decide_v(v)
答案 1 :(得分:1)
您可以使用递归,这是一个调用自身的函数。下面你可以看到函数factorial本身被调用。 http://www.python-course.eu/recursive_functions.php
def factorial(n):
print("factorial has been called with n = " + str(n))
if n == 1:
return 1
else:
res = n * factorial(n-1)
print("intermediate result for ", n, " * factorial(" ,n-1, "): ",res)
return res
我觉得你真的不想知道如何循环一个函数。我想你只想在你给出的例子中调用你的函数。
def calc_v(latitud):
for t in range(0,366):
v=(23.5*math.sin(math.pi*(t-80)/180)+90-latitud)/90
decide_v(v) # return v
def decide_v(v):
if 0<v<1:
print(v**2)
if v>=1:
print(1)
if v<=0:
print(0)
当你在一个函数中使用return语句时,你将离开循环和函数,所以你的for循环只会运行t = 0然后它会突破函数。我想你只想调用你的函数并给它变量v。