调用函数时我无法计算此输出(列表索引超出范围)

时间:2018-02-13 16:27:09

标签: python

我无法弄清楚这个输出。我在列表mapa作为参数传递空位列表的位置。球也应该存在因为我在p函数中传递它

mapa={1:['.','.','.','.','.','.'],
           2:['.','.','.','.','.','.'],
           3:['.','.','.','.','.','.']}

pos=[]

ball='o'
vacio='.'

def pintar():
for i in range(1,len(mapa)+1):
    print("".join(mapa[i]))

def bola():
for i in range(1,len(mapa)+1):
    if ball in mapa[i]:
        global pos
        x_pos=1
        pos.append(x_pos)

def refresh():
 pintar()
 bola()

def p(dic,inst_replace,inst_player):
(dic[pos[0]]).pop(pos[1])
(dic[pos[0]]).insert(pos[1],inst_replace)
(dic[pos[0]]).pop(pos[1]+1)
(dic[pos[0]]).insert(pos[1]+1,inst_player)

while True:
 p(mapa,ball,vacio)
 refresh()
 print(pos)

1 个答案:

答案 0 :(得分:0)

问题似乎是pos[0]第1行中的p()。您已将pos定义为文件顶部附近的空列表,并且您尚未调用bola(),因此它没有第0个元素。该错误让您知道您已尝试查找不存在的列表索引。

我认为您希望在While循环中将调用顺序切换为refresh()p(),以便在bola()中进行查找之前调用pos