You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python/Pygame项目中TypeError:float对象无法被解释为整数问题求助

Python/Pygame项目中TypeError:float对象无法被解释为整数问题求助

嘿,我看到你在Pygame项目里碰到了这个TypeError: 'float' object cannot be interpreted as an integer错误,咱们来拆解一下问题根源,然后快速解决它!

首先先看你的报错详情:

Traceback (most recent call last):
  File "C:\Users\Max Breier\PycharmProjects\pythonProject\JaR\master.py", line 321, in <module>
    main()
  File "C:\Users\Max Breier\PycharmProjects\pythonProject\JaR\master.py", line 74, in main
    Level1.Make_Tileset(IMAGE_LIBRARY)
  File "C:\Users\Max Breier\PycharmProjects\pythonProject\JaR\Terrain.py", line 28, in Make_Tileset
    for TILE in range(Chipset_Length - 1):
TypeError: 'float' object cannot be interpreted as an integer

问题根源

你在代码里用了普通除法/来计算瓦片数量:

Chipset_Length = self.Chipset.get_width() / 32

在Python中,/运算符不管能否整除,都会返回浮点数(比如瓦片集宽度是64的话,结果是2.0而不是2)。但range()函数要求传入的参数必须是整数类型,所以当你用range(Chipset_Length - 1)时,这里的Chipset_Length -1还是浮点数,自然就触发了这个错误。

解决方案

有两种可靠的方式来修复这个问题:

  1. 使用整数除法//(推荐)
    整数除法会直接返回整数结果,而且能保证结果是向下取整的整数,非常适合这种瓦片数量计算场景:

    Chipset_Length = self.Chipset.get_width() // 32
    
  2. 将浮点数转为整数
    如果你确定瓦片集宽度一定是32的倍数,也可以用int()强制转换结果:

    Chipset_Length = int(self.Chipset.get_width() / 32)
    

    不过这种方式如果遇到不能整除的情况会直接截断小数部分,可能导致瓦片数量计算不准确,所以更推荐第一种方法。

修改后的完整代码示例

def Make_Tileset(self, IMAGE_LIBRARY):
    # 用整数除法获取瓦片数量
    Chipset_Length = self.Chipset.get_width() // 32
    for TILE in range(Chipset_Length - 1):
        self.TILE_DICT['Element_%s' % TILE] = self.Chipset.subsurface(32 * TILE, 0, 32, 32).convert_alpha()
        self.TILE_DICT['Element_%s_fill' % TILE] = self.Chipset.subsurface(32 * TILE, 32, 32, 32).convert()
    self.TILE_DICT['No_Element'] = IMAGE_LIBRARY['empty']
    for Surface in self.TILE_DICT:
        self.TILE_DICT[Surface] = pygame.transform.scale(self.TILE_DICT[Surface], self.SIZE_ON_SCREEN)

额外提醒

记得确认你的瓦片集图片宽度确实是32的整数倍哦,不然可能会出现最后一个瓦片不完整的情况。

备注:内容来源于stack exchange,提问作者Max

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 07:00:31