Python:IndexError:弹出索引超出范围[重复]

问题描述 投票:-1回答:1

[嗨,我正在尝试从数组中删除对象,而又不过分。当它离开for时,它将删除已死亡的卡。

错误:

 File "e:/AMS1/M3/Proyecte-Cartas-IETI/main.py", line 86, in <module>
    mainmenu()
  File "e:/AMS1/M3/Proyecte-Cartas-IETI/main.py", line 84, in mainmenu
    switch(opcion)
  File "e:/AMS1/M3/Proyecte-Cartas-IETI/main.py", line 21, in switch
    func()
  File "e:/AMS1/M3/Proyecte-Cartas-IETI/main.py", line 25, in partidajvsj
    partida.partida(cartas, cartasE)
  File "e:\AMS1\M3\Proyecte-Cartas-IETI\partida.py", line 22, in __init__
    partida.attack(turn)
  File "e:\AMS1\M3\Proyecte-Cartas-IETI\partida.py", line 146, in attack
    mesaA.pop(muertes[i])
IndexError: pop index out of range

代码:

            for i in range(len(mesaE)):
                if i == len(mesaA):
                    break
                if i >= len(mesaA):
                    player2.health = player2.health - mesaA[i].attack 
                if mesaE[i].attack >= mesaA[i].defense:
                    print("Info: Card Dead ", mesaE[i].name)
                    checkKill = True
                    muertes.append(i)
                    if mesaE[i].attack>mesaA[i].defense:
                        player1.health = player1.health - (mesaE[i].attack-mesaA[i].defense)
                        print("Le quito: ", (mesaA[i].defense-mesaE[i].attack))
                        print("The player loses health! Player 1: ", player1.health)
            if checkKill == True:
                for i in range(len(deaths)):
                    if i == len(deaths):
                        break
                    print("Card Death: ", muertes[i])
                    mesaA.pop(muertes[i])```
python
1个回答
0
投票

您正在尝试从列表“ mesaA”中弹出一个元素,但是您试图弹出的索引(即meurtes [i])不在该列表中只需确保您要提供的索引在列表中即可

© www.soinside.com 2019 - 2024. All rights reserved.