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

Python报错'int' is not subscriptable:文本冒险游戏开发问题排查

解决Python文本冒险游戏中'int' is not subscriptable错误

作为Python新手开发文本冒险游戏时碰到这类错误太正常了,我帮你理清楚问题的来龙去脉和修正方案:

问题复盘

你用字典存储敌人攻击范围、武器属性,编写战斗逻辑时触发了'int' is not subscriptable错误。一开始简化代码没复现问题,后来排查发现核心原因是**enemy变量没有被正确赋值为enemyList里的字典元素**。

错误根源拆解

先看你战斗循环里的关键代码:

def battleLoop():
    enemyList = [giant_rat, giant_spider]
    enemy = random.randrange(2)  # 这里得到的是0/1的整数索引,不是敌人字典!
    stdio.writeln('Suddenly a ' + enemyList[enemy]['name'] + ' appears!')
    attackLoop(enemy)  # 把整数索引传给攻击函数,后续操作必然报错

random.randrange(2)返回的是0或1的整数,而不是enemyList里的字典对象。当你在attackLoop里执行enemy['Health'] -= atkDmg时,本质是在对一个整数做下标访问操作,这就触发了'int' is not subscriptable的错误。

修正后的完整代码

只需要把enemy变量直接赋值为enemyList的元素即可,同时我补充了一些细节让逻辑更完整:

import random
import stdio

# Weapon Stats
weapon = {'Bone':(4, 9), 'None':random.randrange(2, 5)}
# Player Stats
player = {'weapon':'None', 'Health':20, 'Holding':'None'}
# Enemies
giant_rat = {'name':'Giant Rat', 'Health':15, 'attack':(1, 4)}
giant_spider = {'name':'Giant Spider', 'Health':20, 'attack':(2, 5)}  # 补充定义缺失的敌人

def battleLoop():
    enemyList = [giant_rat, giant_spider]
    enemy_index = random.randrange(2)
    enemy = enemyList[enemy_index]  # 直接获取字典类型的敌人对象
    stdio.writeln('Suddenly a ' + enemy['name'] + ' appears!')
    attackLoop(enemy)

def attackLoop(enemy):
    # 处理武器伤害:范围伤害取随机值,固定值直接用
    atk_dmg = weapon[player['weapon']]
    if isinstance(atk_dmg, tuple):
        atk_dmg = random.randint(*atk_dmg)
    
    enemy['Health'] -= atk_dmg
    stdio.writeln(f"You strike the {enemy['name']} for {atk_dmg} damage!")
    stdio.writeln(f"{enemy['name']} now has {enemy['Health']} health remaining!")

# 测试调用
battleLoop()

额外提醒两个细节:

  • 你的weapon字典里,'Bone'对应伤害范围元组,'None'对应随机整数,战斗时最好判断类型再计算实际伤害,避免直接用元组做减法(虽然Python允许,但不符合真实战斗逻辑)
  • 补充了giant_spider的定义,避免出现未定义变量的错误

总结

碰到'int' is not subscriptable错误时,第一时间检查你尝试做下标操作的变量类型——大概率是把整数(比如索引)当成了字典、列表这类可下标访问的对象,修正变量的赋值逻辑就能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:15:36