【问题标题】:IndexError: string index out of range (can i have use 3 indexes at once?)IndexError:字符串索引超出范围(我可以一次使用 3 个索引吗?)
【发布时间】:2013-11-30 22:14:56
【问题描述】:

我遇到了以下错误,我不知道为什么。

IndexError: string index out of range

以前我在 for 循环中使用它,只是假设我是个白痴,但我开始认为 Python 根本无法处理我的要求。

这是错误指示的特定行:

print(location[5][1][0])

这里是它引用的列表:

location = ec
ec = (5,3, "Trader Outpost", plain_mobs, store, trader_outpost)
trader_outpost  = [filler,sword,shield,amulet]
sword = ["Sword ", 0, 0, 0, 5, 0, 20, "Sword"]

我应该发生的是 Python...

  1. 采用location[5],即列表trader_outpost
  2. 然后从trader_outpost获取索引1,也就是列表sword
  3. 然后从sword获取索引0,也就是字符串"sword"

这样的列表是不可能的吗?

编辑:我的主要问题已经找到:我的一个变量没有正确地通过函数

已解决:我发现我的代码部分错误。我将location[2] 作为函数的参数之一。这会将"Trader Outpost" 传递给我遇到问题的那个而不是列表。

【问题讨论】:

  • 尝试打印出location,然后是location[5],然后是location[5][1],然后是location[5][1][0],看看每个是什么。其中之一可能不是你想象的那样。
  • 你看起来真的需要一个 python 字典。
  • @Dunno 如果没有上下文,那条评论可能会显得很粗鲁:)
  • @LevLevitsky 呵呵,没错,我编辑了它。

标签: python indexing range out


【解决方案1】:

您的说明是否按正确的顺序?这对我来说很好:

filler, sword, shield, amulet = 'f', 's', 'h', 'a'
plain_mobs, store = 'pm', 'st'

sword   = ["Sword "  ,0  ,0  ,0  ,5  ,0 ,20     ,"Sword"]
trader_outpost  = [filler,sword,shield,amulet]
ec = (5,3,  "Trader Outpost"        ,plain_mobs      ,store         ,trader_outpost)
location = ec

print(location[5][1][0])
=> Sword

所以是的,如果遇到的每个元素都可以通过索引访问,那么您一次可以拥有 3 个索引。

【讨论】:

  • 我认为“位置”的值在我的代码中的其他地方发生了变化。现在试图找到它。但是,是的,当我也这样做时,它对我来说很好
  • @user3002588 我很困惑,为什么你的 sn-p 中的指令顺序是相反的......所以你的程序中的顺序是正确的?
  • 我给出了这样的说明,因为我最初的问题是问题是否像这样有 3 个索引。这个问题已经得到解答。现在我有另一个问题,除了我不知道那是什么
猜你喜欢
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多