gpt4 book ai didi

Python 3.3.3 : TypeError: list indices must be integers, 不 float

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:22 26 4
gpt4 key购买 nike

我有一个 python 2.7.6 程序,我想转换为 3.3.3。

我收到一个错误:

File "H:\My Game Python 3,3\MoonSurvival.py", line 199, in run
self.moon.levelStructure[x][y] = None

回溯是:

Traceback (most recent call last):
File "H:\My Game Python 3,3\MoonSurvival.py", line 591, in <module>
Game().run()
File "H:\My Game Python 3,3\MoonSurvival.py", line 199, in run
self.moon.levelStructure[x][y] = None
TypeError: list indices must be integers, not float

但是当我查看levelStructure 的代码时,没有任何问题。这是分配 levelStructure 的代码:

tempBlock = Block(x*64, y*64)
# add block to both and self.levelStructure
self.levelStructure[x][y] = tempBlock

如您所见,levelStructure 是 tempBlock。当它在倍增时,它似乎在给一个 float 。我知道除法是两个斜杠 /。我试图乘以 '*' 但我仍然得到错误。我并不完全熟悉 3.3.3 语法,因为我通常使用 2.7.6。

区 block 代码:

class Block(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)

self.image = pygame.image.load('data/images/moon.jpg')

self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y

def render(self, surface):
surface.blit(self.image, self.rect)

是什么导致了这个错误?

最佳答案

由于您是从 Python 2.7 -> Python 3.x 转换的,所以这几乎肯定是楼层划分的问题。

我不确定你在哪里生成你的 xy,但是如果你在任何时候将这些数字除以任何值,请确保你使用// Python 3 中的运算符,如果您希望得到整数结果。

在 Python 2 中,5/2 == 2 并且您必须执行 5/2.0 以获得浮点结果。在 Python 3 中,5/2 == 2.5 并且您必须执行 5//2 以获得除法的底整数结果。有可能每当你在你的 xy 上操作时,你将它除以在 Python 2 中给你一个整数但在 Python 3 中给你的东西那个 float ,所以当你尝试将它用作列表索引时...BOOM

关于Python 3.3.3 : TypeError: list indices must be integers, 不 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21609227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com