TypeError:“int”对象在我尝试迭代内部循环时不可编辑?

2024-06-28 19:07:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道我的循环结构有什么问题。可能是命名问题,因为count变量和子元素名称使用同一个变量。感谢任何帮助。在

from xml.etree import ElementTree as ET

root = ET.Element("painter")
root.set('version', '1.0')
linenum = 0
pointnum = 0

smpl_data = [[[20,40],(0,0,1,1)],[[10,50],(0,0,1,1)],[[78,89],(0,0,1,1)]]

while linenum <= len(smpl_data): #smpl_data change to self.lines
    elem_line = ET.SubElement(root,"line" + str(linenum), attrib={"r": "1", "g": "2", "b": "3", "a": "4"})                     
    elem_line.set("r", smpl_data[linenum][1][0])
    print elem_line.attrib.get("r")                      
    elem_line.set("g", smpl_data[linenum][1][1])
    print elem_line.attrib.get("g")
    elem_line.set("b", smpl_data[linenum][1][2])
    print elem_line.attrib.get("b")
    print elem_line.get("a")
    elem_line.set("a", smpl_data[linenum][1][3])
    print elem_line.attrib.get("a")

    for pointnum in linenum:
        elem_point = ET.SubElement("line" + str(linenum), "point" + str(pointnum), attrib={x: "10", y: "20"})
        print elem_point
        print elem_point.get("x")
        elem_point.set("x", smpl_data[linenum][0][0])
        print elem_point.attrib.get("x")
        print elem_point.get("y")
        elem_point.set("y", smpl_data[linenum][0][1])
        print elem_point.attrib.get("y")
        pointnum = pointnum + 1
   linenum = linenum + 1

对于linenum中的pointnum,当它开始遍历内部循环时,我得到了正确的错误。不知道为什么?在

我很抱歉没有说清楚。在

这是完整的错误:

^{pr2}$

我在完整程序中的目标是能够将所有特定(x,y)点作为属性添加到它们各自的子元素(line)中。每条线都连接到主根。但是,(x,y)点的数量随我的持久数据而变化,因为每一行的长度可能不同。在

XML文档应该如下所示:

<root>
<line r="0", g="0", b="1", a="1">
    <point x="20" y="30">
    <point x="10" y="15">
    <point x="15" y="25">
    ...
</line>
<line r="0", g"1", b="1", a="1">
    ...
</line>
...
</root>

Tags: 元素datagetlinerootetpointprint
2条回答

linenum不可编辑。很难说你想在这里做什么,但也许for pointnum in smpl_data[linenum]:会是你想要的?在

你可能想

for pointnum in range(linenum):

也就是说,从0到1的所有数字都小于linenum

相关问题 更多 >