错误:类型错误:列表索引必须是整数或切片,而不是元组

2024-09-26 22:45:06 发布

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

所以我正在写一个方法,它会告诉我最近的敌人

ef nearestEnemy(player, *args):
    nearest = 0
    list = [args]
    print(list)
    for x in list:
        if player.getDistancetoEnemy(list[x]) > nearest:
            nearest = list[x]

它总是给我一个错误:

def近邻敌人(玩家,*args): 最近值=0 列表=[args] 打印(列表) 对于列表中的x: if player.getDistanceToEnmy(列表[x])>;最近的: 最近的=列表[x]

这是我的主要观点:

def main():
    dragon1 = dragon()
    dragon2 = dragon()
    player1 = player()
    player1.setPosition(100, 100)
    dragon1.setPosition(200, 200)
    dragon2.setPosition(150, 150)
    nearestEnemy(player1, dragon1, dragon2)

这就是让我与敌人保持距离的方法:

    def getDistancetoEnemy(self, enemy):
        return math.sqrt(pow(enemy.getPosition()[0] - self.x, 2) + pow(enemy.getPosition()[1] - self.y, 2))

谢谢你的帮助,祝你度过一个美好的夜晚


Tags: 方法self列表defargslistplayer敌人
1条回答
网友
1楼 · 发布于 2024-09-26 22:45:06

当使用“*args”时,变量args是一个tuple。因此,list = [args]将成为>list = [(player1, dragon1, dragon2)]

因此for循环用于从元组中获取各个元素:

list = []
for arg in args:
    list.append(arg)

在这方面:

for x in list:

变量x是一个tuple。因此list[x]失败,您应该使用索引来查找,而不是列表中的实际元素(x)

直接使用x而不是list[x],或者将for循环条件更改为:

for i in range(len(list)) 

然后使用list[i]

相关问题 更多 >

    热门问题