簡體   English   中英

“浮動”對象不是可迭代的錯誤

[英]'float' object is not iterable error

我正在嘗試獲取在給定時間長度(也是值列表)內讀出負載值(在 xml 文檔中給出)的變量。 t 的列表是從值“開始”到“結束”,間隔為 15 分鍾。 基本上我想要的是我想要一個負載值打印其各自時間列表的整個長度。 所以如果它的時間列表是 [0 15 30 45 60] 那么我希望它的負載值在一個重復 5 次的列表中。 我正在運行的 xml 文檔和代碼在下面,我的potW 分配不斷出現錯誤,提示“'float' 對象不可迭代。” 我知道這很多,但有什么建議嗎?

import xml.etree.ElementTree as ET 
import os

class WaterModel:

    def __init__(self,fn):

        self.tree = ET.parse(fn)
        self.root = self.tree.getroot()

        self.title, self.start, self.end, self.load, self.duration, self.Type = [],[],[],[],[],[]

        for child in self.root:
            self.title.append(child.find('title').text)

            sh = int(child.find('startHour').text)
            sm = int(child.find('startMinute').text)
            self.duration.append(int(child.find('duration').text))
            self.start.append(sh*60+sm)
            self.end.append(self.start[-1] + self.duration[-1])
            self.Type.append(child.find('Type').text)
            self.load.append(float(child.find('load').text))


    def Wp(self):

        greyW = 0  
        for i in range(len(self.root)):
            if self.Type[i] == 'greywater':
                greyW += self.load[i]*self.duration[i]

        t = range(self.start[i], self.end[i]+1, 15)  
        for i in range(len(self.root)):
            for j in range(len(t)):
                if self.Type[i] == 'potable':
                    potW = [a for a in self.load[j]]

fn = 'SD2017NominalWaterUse.xml'
a = WaterModel(fn)
b = a.Wp()
print(b) 

xml 文件“SD2017NominalWaterUse.xml”被讀入上面的代碼:

<WaterNominalDay>

<event>
<title>Evening Washer</title>
<Type>greywater</Type>
<startHour>19</startHour>
<startMinute>30</startMinute>
<duration units = 'min'>270</duration>
<load units = 'gal/min'>.051852</load>
<comment>
''
</comment>
</event> 

<event>
<title>Morning Cooking</title>
<Type>potable</Type>
<startHour>7</startHour>
<startMinute>30</startMinute>
<duration units = 'min'>180</duration>
<load units = 'gal/min'>.003331</load>
<comment>
'5 lb water is .5995 gal'
</comment> 
</event>

<event>
<title>Evening Cooking</title>
<Type>potable</Type>
<startHour>19</startHour>
<startMinute>30</startMinute>
<duration units = 'min'>180</duration>
<load units = 'gal/min'>.003331</load>
<comment>
'5 lb water is .5995 gal'
</comment> 
</event>


<event>
<title>Leaks</title>
<Type>potable</Type>
<startHour>0</startHour>
<startMinute>00</startMinute>
<duration units = 'min'>1440</duration>
<load units = 'gal/min'>.006944</load>
<comment>
''
</comment> 
</event>

</WaterNominalDay>

self.load i 是一個float數組,所以self.load[j]將是一個浮點數,這就是您要迭代的內容; 因此錯誤信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM