Python 对于具有str和int冲突的循环和While循环

Python 对于具有str和int冲突的循环和While循环,python,python-2.7,for-loop,while-loop,int,Python,Python 2.7,For Loop,While Loop,Int,我试图发现如何使用for循环,以及字符串和int在哪里可以区分 我创建了一个函数调用维度和TV大小:例如 def TVDisplay(dimension, TVsize): final = "<===" for i in range(TVsize-2): final = final + "==" final = final + "==>\n" for corner in dimension: final = final

我试图发现如何使用for循环,以及字符串和int在哪里可以区分

我创建了一个函数调用维度和TV大小:例如

def TVDisplay(dimension, TVsize):
    final = "<==="
    for i in range(TVsize-2):
        final = final + "=="
    final = final + "==>\n"

    for corner in dimension:
        final = final + "< "
        for edge in corner:
            final = final + edge + " "
        final = final + ">\n"

    final = final + "<==="
    for i in range(TVsize-2):
        final = final + "=="
    final = final + "==>\n"

    return final
行,无法连接“str”和“int”对象。 我得到循环中间部分的目的是吐出显示的中间部分

< 0 0 >
< 0 0 >
<0>
< 0 0 >
最后一个循环将其关闭


这就是我的问题

维度是列表的列表,对吗

所以当你打电话时:

for corner in dimension:
    for edge in corner:
它指的是实际对象。所以角点是一个列表,边是列表中的一个对象。 这等于说:

while corner < len(dimension):
    edge = 0
    while edge < len(dimension[corner]):
         finale += dimension[corner][edge] + " "
实际上,您指的是y中的对象x。但是当你说:

for x in y
while x < y:
    x+=1
当x
X只是一个整数(在您的例子中,它是对象的索引)。要访问实际对象,必须使用y[x]。“in”函数指的是实际对象,而使用while循环时,会创建一个计数器来跟踪索引而不是实际对象

while corner_index < len(dimension):
    edge_index = 0
    corner = dimension[corner_index] #retrieve the list from dimension
    final = final + "< "
    while edge_index < len(corner):
        edge = corner[edge_index] #get the edge
        final += edge + " "
        edge_index+=1
    final = final + ">\n"
    corner_index+=1
角点索引 边索引=0 角点=维度[角点索引]#从维度检索列表 最终=最终+“<” 当边缘索引\n” 角点指数+=1 更简洁地说:

while corner_index < len(dimension):
    edge_index = 0
    final = final + "< "
    while edge_index < len(dimension[corner_index]):
        final += dimension[corner_index][edge_index] + " "
        edge_index+=1
    final = final + ">\n"
    corner_index+=1
角点索引 边索引=0 最终=最终+“<” 边索引\n” 角点指数+=1 至于你的编辑:

访问edge(作为索引整数)的方式意味着您必须首先对字符串进行类型转换。因此:

最终+=str(边)+“


最初没有此问题,因为“edge”引用了维度列表中的实际字符串对象“0”。然而,当您使用while循环时,“edge”是一个整数,您正在使用它作为计数器。

这到底是在做什么?
TVsize
是什么意思?
维度
代表什么?我建议坚持使用
进行
,以避免容易出错的手动增量,但您应该先让第一个版本正常工作-例如尝试
TVDisplay([[0',0',0',0']],3)
。您知道可以使用
*
重复字符串吗?这意味着您的第一个循环可以替换为
final=“\n”
。您还可以使用
str.join
连接字符串,因此您的内部循环可以替换为
final+=“<”+”.join(corner)+“>\n”
.corner=1,而corner\ncorner+=1我试着把len(corner)放进去,但结果显示,
corner
是一个整数;你希望len(corner)
做什么呢?我正试图让forloop的foor循环中间部分对while循环做同样的事情
while corner < len(dimension):
    edge = 0
    while edge < len(dimension[corner]):
         finale += dimension[corner][edge] + " "
for x in y
while x < y:
    x+=1
while corner_index < len(dimension):
    edge_index = 0
    corner = dimension[corner_index] #retrieve the list from dimension
    final = final + "< "
    while edge_index < len(corner):
        edge = corner[edge_index] #get the edge
        final += edge + " "
        edge_index+=1
    final = final + ">\n"
    corner_index+=1
while corner_index < len(dimension):
    edge_index = 0
    final = final + "< "
    while edge_index < len(dimension[corner_index]):
        final += dimension[corner_index][edge_index] + " "
        edge_index+=1
    final = final + ">\n"
    corner_index+=1