gpt4 book ai didi

python - 将参数传递给使用 pvmismatch : Why is this not working? 的函数

转载 作者:行者123 更新时间:2023-12-04 08:48:03 24 4
gpt4 key购买 nike

我正在使用一个名为 pvmismatch 的库,它可以测量不完美阴影对太阳能电池的影响,我认为它很快就会与 pvlib 兼容。我不确定这是一个与 python 相关的问题,还是与库相关的问题,但可能是前者。
我想创建一个函数,该函数接受使用“setSuns”的“阴影”列表以及要着色的单元格的索引。我的代码如下:

def shade_into_powers(shades_list = [], temperatures_list = [], cells_list = []):
length_of_lists = len(shades_list)
list_of_powers = []
for i in range(0, length_of_lists):
my_module_shaded.setSuns(Ee = shades_list[i], cells = cells_list[i])
my_module_shaded.setTemps(Tc=temperatures_list[i], cells= cells_list[i])
list_of_powers[i] = my_module_shaded.pvcells[i].Igen*max(my_module_shaded.pvcells[i].Vcell)
return list_of_powers
我后来尝试如下尝试此功能:
shadez = [0.43, 0.43, 0.43]
tempez = [88, 81, 77]
cellz = [30, 31, 32]
powers_listed = shade_into_powers(shadez, tempez, cellz)
我得到的错误是“'int'类型的对象不可迭代”。我在这里做错了什么?
所有帮助表示赞赏。
以下是回溯:
Traceback (most recent call last):
File "/home/abed/.config/JetBrains/PyCharmCE2020.2/scratches/scratch_2.py", line 176, in <module>
powers_listed = shade_into_powers(shadez, tempez, cellz)
File "/home/abed/.config/JetBrains/PyCharmCE2020.2/scratches/scratch_2.py", line 168, in shade_into_powers
my_module_shaded.setSuns(Ee = shades_list[i], cells = cells_list[i])
File "/home/abed/.local/lib/python3.7/site-packages/pvmismatch/pvmismatch_lib/pvmodule.py", line 323, in setSuns
cells_to_update = [self.pvcells[i] for i in cells]
TypeError: 'int' object is not iterable

最佳答案

感谢您使用PVmismatch .如@carcigenicate , 在 their comment 中说, 你得到 TypeError: 'int' object is not iterable 的原因是因为 cells 的预期参数在 setSuns()API 中记录的列表:
enter image description here
我认为您正在尝试为模块中的 3 个电池设置辐照度和温度。如果正确,您可以通过一次调用 setSuns 来完成此操作。紧接着调用 setTemps .另请注意 cell temperatures are Kelvin ,而不是摄氏度。另请注意,您可以通过调用 NumPy max() 来获取最大电池温度。 IV曲线幂数组上的函数,Pcell[cell_idx] .

>>> from pvmismatch import *

>>> shadez = [0.43, 0.43, 0.43]
>>> tempez = [88, 81, 77]
>>> cellz = [30, 31, 32]

>>> my_module_shaded = pvmodule.PVmodule()

>>> my_module_shaded.Pmod.max() # module max power
321.2733629193704

# power of cells 30, 31, & 32, same for all cells in module
>>> [cellpower.max() for cellpower in my_module_shaded.Pcell[cellz]]
[3.3466338806725577, 3.3466338806725577, 3.3466338806725577]

>>> my_module_shaded.setSuns(Ee=shadez, cells=cellz)

>>> my_module_shaded.Pmod.max() # module max power, after irradiance change
217.32753929640674

# NOTE: cell temperature is in Kelvin, not Celsius!
>>> tempez = [tc + 273.15 for tc in tempez] # convert to Kelvin
>>> my_module_shaded.setTemps(Tc=tempez, cells=cellz)

>>> my_module_shaded.Pmod.max() # module max power, after temperature change
215.93464636002747

# power of cells 30, 31, & 32, same for all cells in module
>>> [cellpower.max() for cellpower in my_module_shaded.Pcell[cellz]]
[1.0892289330819398, 1.1230533440517434, 1.1424662134689452]

关于python - 将参数传递给使用 pvmismatch : Why is this not working? 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64216311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com