【问题标题】:Call function? Python调用函数? Python
【发布时间】:2015-01-19 15:28:01
【问题描述】:

我的问题是我想要: 然后我希望它在 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

【问题讨论】:

  • 循环函数是什么意思?函数中的for循环?递归? for 循环中的函数?
  • @Pellegrino:请不要破坏你自己的问题;这消除了人们花时间制作的答案的许多用处。

标签: python function loops iteration


【解决方案1】:

您可以从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)

【讨论】:

    【解决方案2】:

    您可以使用递归,它是一个调用自身的函数。您可以在下面看到函数 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 2013-08-30
      • 1970-01-01
      相关资源
      最近更新 更多