【发布时间】:2014-04-20 05:10:57
【问题描述】:
使用 python 3.3
偶然发现我的程序存在另一个问题。它是相同的太阳能程序。我再次决定添加更多功能。它基本上是临时的。我正在添加一些东西。我意识到它可以提高效率,但一旦我决定完成,我会发布整个编码。
无论如何,我需要添加多个函数的结果。这是我编码的一部分:
def janCalc():
for a in angle(0,360,10): #angle of orientation
for d in days(1,32,1.0006630137): #day number of year
for smodule in equation(): #equation() function not shown in this coding
total_jan+=smodule #total_jan is already defined elsewhere
avg_jan=total_jan/(60*(1.0006630137*31))
ratio_jan=avg_jan/5.67
calcJan=(ratio_jan*4.79)
yield calcJan
total_jan=0 #necessary to reset total to 0 for next angle interval
def febCalc():
for a in angle(0,360,10):
for d in days ((1.0006630137*31),61,1.0006630137):
for smodule in equation():
total_feb+=smodule
avg_feb=total_feb/(60*(1.0006630137*28))
ratio_feb=avg_feb/6.56
calcFeb=(ratio_feb*4.96)
yield calcFeb
total_feb=0
#etc..............
有没有增加每个函数的产量? 例如:calcJan+calcFeb+.....
我想得到每个角度区间下的总结果,然后除以 12 得到每个区间的平均值。像这样:-
0度---->总计/12
10 度 ---->总计/12
20 度 ---->总计/12
30 度 ---->总计/12
........
360 度 ---->总计/12
如果您需要更多信息,请告诉我。
附录
该解决方案基本上由@jonrsharpe 解决。但是我遇到了一点问题。
Traceback (most recent call last):
File "C:\Users\User\Documents\Python\Solar program final.py", line 247, in <module>
output=[sum(vals)/12 for vals in zip(*(gen() for gen in months))]
File "C:\Users\User\Documents\Python\Solar program final.py", line 247, in <listcomp>
output=[sum(vals)/12 for vals in zip(*(gen() for gen in months))]
File "C:\Users\User\Documents\Python\Solar program final.py", line 103, in janCalc
for smodule in equation():
File "C:\Users\User\Documents\Python\Solar program final.py", line 63, in equation
d=math.asin(math.sin(math.radians(23.45))*math.sin(math.radians((360/365.242)*(d-81))))
NameError: global name 'd' is not defined
我已将其隔离为:
for d in days ((1.0006630137*31),61,1.0006630137):
for smodule in equation():
原来我不能从函数内部引用函数?我不太确定。所以即使我的原始编码也不起作用。我认为它正在工作,因为以前我没有将每个月定义为一个函数。我应该先测试一下。
你知道如何解决这个问题吗?
【问题讨论】:
-
什么是“我只知道如何获得每个函数的收益,但不知道如何以我想要的方式交互它们。”意思是?此外,请尝试在您的代码中排除所有这些“神奇数字”。
-
我不应该包括那个。这令人困惑。我的意思是,我只知道如何引用一个函数,但不知道如何为我的方程引用多个函数。我希望这是有道理的。
-
我认为问题在于你没有定义
total_feb;您当然可以“从函数内部引用函数”。完整的错误回溯在哪里? -
刚刚发布了回溯错误。
-
问题是那个函数
equation不起作用;它与您迄今为止发布的代码无关!在从其他代码调用它之前,您应该单独测试该函数;如果您不能使其单独工作,您可能需要打开一个新问题(包含所有适当的信息)。首先,我建议您摆脱所有global变量并明确传递函数所需的参数,这将使NameErrors 更容易找到和修复。
标签: function python-3.x mapping