builtins.TypeError:列表索引必须是整数,而不是列表。第10行,在<module>中,如果生成[row][col]==0:

2024-06-25 23:06:53 发布

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

我的程序是编写一个程序,模拟在不同地点感染病毒的计算机网络

根据随机数0(健康)、1(感染)和2(死亡)的列表,我的函数需要在图形窗口的给定位置显示一个圆。下面是我到目前为止为下面给定函数编写的代码

def displaygen(generation,  win):        
    for row in generation:
        for col in row:
            position = Point(5,5)    
            if generation[row][col] == '0':
                circ = Circle(position,3)
                circ.setFill('green')
                circ.draw(win)
            elif generation[row][col] == '1':
                circ = Circle(position,3)
                circ.setFill('red')
            elif generation[row][col] == '2':
                circ = Circle(position,3)
                circ.setFill('black')                

Tags: 函数in程序forpositioncolwingeneration
2条回答

在第二个循环中,col获取每列的实际值(与索引相反)。因此,您不需要使用generation[row][col]语法访问元素,只需直接使用元素,如:

for row in generation:
    for col in row:
        if col == '0':

for循环应该迭代索引而不是行(列表),或者只获取每列中的元素。从生成矩阵(generation[row][col])访问时,使用的行和索引似乎应该是int值,在for循环中访问行列表

请尝试以下操作:

def displaygen(generation,  win):        
    for row in range(len(generation)):
        for col in range(len(generation[row])):
            position = Point(5,5)    
            if generation[row][col] == '0':
                circ = Circle(position,3)
                circ.setFill('green')
                circ.draw(win)
            elif generation[row][col] == '1':
                circ = Circle(position,3)
                circ.setFill('red')
            elif generation[row][col] == '2':
                circ = Circle(position,3)
                circ.setFill('black')

或者直接访问矩阵中的元素

    def displaygen(generation,  win):        
        for row in generation:
            for col in row:
                position = Point(5,5)    
                if col == '0':
                    circ = Circle(position,3)
                    circ.setFill('green')
                    circ.draw(win)
                elif col == '1':
                    circ = Circle(position,3)
                    circ.setFill('red')
                elif col == '2':
                    circ = Circle(position,3)
                    circ.setFill('black')  

相关问题 更多 >