与えられた長さの時間(値のリストも含む)の読み込み値(xmlドキュメントで与えられた)を読み込む変数を取得しようとしています。 tのリストは、15分の間隔で 'start'から 'end'までの値です。本質的に私が望むのは、それぞれの時間リストの全長にわたって1つの負荷値を印刷したいということです。したがって、その時間リストが[0 15 30 45 60]の場合、その負荷値を5回繰り返すリストに入れます。私が実行しているXML文書とコードは以下の通りです。私は、 "float 'オブジェクトがiterableではないと言っている私の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>
'[a in a X]'は 'X'の浅いコピーではありませんか? 'X [:]'は同じことを達成しないでしょうか(それがあなたがしようとしているものなら)? –