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

如何在pygame中使用csv文件数据?遇'int'对象不可下标报错

问题排查与解决方法

你遇到的TypeError: 'int' object is not subscriptable报错,是因为代码中对整数类型的变量使用了[索引]的下标访问方式,错误行total_level_width = len(data[0])*TILE_SIZE[0]有两个可能的错误来源,按优先级排查即可:

排查步骤

  • 检查TILE_SIZE的定义
    代码中需要TILE_SIZE是包含宽、高两个值的序列(比如元组、列表),如果误把它定义为单个整数(例如TILE_SIZE = 32),访问TILE_SIZE[0]就会触发该报错。你可以在错误行之前添加打印代码确认:
    print(type(TILE_SIZE), TILE_SIZE)
    
  • 检查data变量的结构是否被修改
    你读取csv得到data后,先传给了World的构造函数,如果World类内部修改了传入的data变量(比如把二维列表转成了一维整数数组),那么执行完world = World(data)之后,data[0]就会变成整数,再取len(data[0])就会触发报错。你可以在world = World(data)之后添加打印代码确认:
    print(type(data[0]), data[0])
    

对应修复方案

  1. 如果是TILE_SIZE定义错误,修改为二元序列即可,示例:
# 单个瓦片宽32像素,高32像素
TILE_SIZE = (32, 32)
  1. 如果是World类修改了data结构,调整代码执行顺序,先计算关卡宽高再初始化World即可:
# 调整后顺序
f = open("Levels/level1.csv", "r")
data = csv.reader(f)
data = [row for row in data]
f.close()

# 先计算关卡宽高,再传入World构造函数
total_level_width = len(data[0])*TILE_SIZE[0]
total_level_height = len(data)*TILE_SIZE[1]
world = World(data)
camera = Camera(Camera.camera_move, total_level_width, total_level_height)
entities.add(player)

内容的提问来源于stack exchange,提问作者Sam Winkworth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:06:00