python - 从数组中删除对象而不会过冲
问题描述
我正在尝试从数组中删除对象而不会超出。当它离开时,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
代码:
if(turn==1):
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])
解决方案
您正在尝试从列表“mesaA”中弹出一个元素,但您尝试弹出的索引(即 meurtes[i])不在该列表中只需确保您提供的索引在列表中
推荐阅读
- spring-integration - 出站网关的Spring Integration模拟失败
- java - Kafka Template 和 kafka producer 有什么区别?
- reactjs - 为 React 项目运行 Jest 测试时出现“ReferenceError:未定义窗口”
- firebase - 13 个月后删除 Firebase Analytics 数据以符合 GDPR
- javascript - 将请求处理为 laravel api 的 javascript ajax
- nativescript - localforage 是否可以在 IOS 上使用 nativescript 预览应用程序?
- javascript - 与 vue.js 一起使用时,AR.js 无法识别标记
- php - 如何在纯 PHP 中获取起始 HTML 标记?
- ios - 在我调用 requestWhenInUseAuthorization() 之前触发位置权限对话框
- ffmpeg - centos中带有libwebp的FFmpeg