当我尝试遍历内部循环时,TypeError:\'int\'对象是否不可迭代?

问题描述

| 我不确定我的循环结构是什么问题。也许这是一个命名问题,因为count变量和SubElement名称使用相同的变量。任何帮助表示赞赏。
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,1,1)],[[10,50],[[78,89],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,我得到了正确的错误。不知道为什么吗? 抱歉,不清楚。 这是完整的错误
  Traceback (most recent call last):
  File \"C:\\Users\\joel\\Desktop\\open-autism-software\\software\\asd\\pen\\writexml.py\",line 57,in <module>
  for pointnum in linenum:
  TypeError: \'int\' object is not iterable
我在整个程序中的目标是能够将所有特定的(x,y)点作为属性添加到其各自的SubElement(行)中。每行都附加到主根。但是,(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\",a=\"1\">
    ...
</line>
...
</root>
    

解决方法

        你可能想要
for pointnum in range(linenum):
也就是说,所有数字从零到1比行号小     ,        
linenum
不可迭代。很难说出您要在这里做什么,但也许5英镑就是您想要的?     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...