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

面向对象RPG开发遇TypeError错误:string indices must be integers

解决文本RPG装备系统中的TypeError: string indices must be integers问题

嘿,我看你在开发文本RPG的装备系统时碰到这个头疼的错误了,咱们来一步步拆解解决它!

错误原因分析

这个错误的核心意思是:你试图用字符串(比如"Name")去索引另一个字符串,而字符串的索引只能是整数(比如"hello"[0]取第一个字符)。回到你的代码里,问题大概率出在**self.armorsOwned列表里的元素不是字典,而是纯字符串**——当你循环访问armor["Name"]时,如果armor是个字符串,自然就会触发这个错误。

你的代码问题点

看这段循环代码:

def equipArmor(self):
    for armor in self.armorsOwned:
        select = 1  # 这里还有个小bug:每次循环都会重置序号为1
        if self.armor == armor:
            print(str(select) + ". " + str(armor["Name"]) + " (Equipped)")
        else:
            print(str(select) + ". " + str(armor["Name"]))
        select += 1

如果self.armorsOwned里存的是类似["皮甲", "铁甲"]这样的字符串列表,那armor["Name"]就等同于"皮甲"["Name"],这完全不符合字符串的索引规则,直接报错。

解决方案

  1. 确保装备列表的元素是字典
    检查你初始化或添加装备到self.armorsOwned的代码,必须保证每个元素是包含"Name"键的字典:

    # 正确的初始化/添加方式
    self.armorsOwned = [
        {"Name": "皮甲", "防御": 5},
        {"Name": "铁甲", "防御": 15}
    ]
    # 错误的方式(别这么写!)
    # self.armorsOwned = ["皮甲", "铁甲"]
    
  2. 先调试确认元素类型
    如果你不确定self.armorsOwned的内容,可以在循环前加两行调试代码:

    print("当前拥有的装备:", self.armorsOwned)
    print("第一个装备的类型:", type(self.armorsOwned[0]))
    

    如果输出的类型是<class 'str'>,那就是上面说的问题;如果是<class 'dict'>,再检查有没有其他地方把armor变量改成了字符串。

  3. 顺便修复序号重置的小bug
    你现在的select = 1放在循环内部,会导致所有装备的序号都是1,把它移到循环外面就能正常递增了,还可以用f-string简化打印代码:

    def equipArmor(self):
        select = 1  # 移到循环外
        for armor in self.armorsOwned:
            if self.armor == armor:
                print(f"{select}. {armor['Name']} (已装备)")
            else:
                print(f"{select}. {armor['Name']}")
            select += 1
        armor_choice = input("请输入你想要装备的名称:\n")
        for i in self.armorsOwned:
            if armor_choice == i["Name"]:
                self.armor = i  # 把选中的装备设为当前装备
                print(f"成功装备{i['Name']}!")
                break
        else:
            print("你没有这件装备!")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:33:22