【问题标题】:List index out of range error with Python 3Python 3的列表索引超出范围错误
【发布时间】:2018-12-15 17:34:50
【问题描述】:
for x in range (0,24):
  RandCharGen = random.randint(0,len(characters)) 
  RandChar = characters[RandCharGen]

显示错误:

RandChar = characters[RandCharGen]
IndexError: list index out of range

有人有解决办法吗?

【问题讨论】:

  • 快速备注:按 PEP8 标准命名变量,例如 snake_case:en.wikipedia.org/wiki/Snake_case
  • randint 返回数字包括第二个值,这会导致越界访问。
  • 那你需要randrange
  • len(characters) -1?

标签: python python-3.x


【解决方案1】:

如 cmets 中所述,您可以超出字符串的范围,除非您使用 random.randrange,这是为了避免此问题而添加的(由于随机方面,这可能是隐秘的)。更多信息:Difference between random randint vs randrange

但更好的解决方案是 random.choice 从您的字符串/列表中选择一个随机项目:

for x in range (0,24):
  RandChar = random.choice(characters)

【讨论】:

    【解决方案2】:

    randint 函数返回一个包含 both 端点的值。如果characters 的长度为 10 个字符,则它可以返回的最大数字是 10,这将高于最高索引 9。您可以将其更改为:

    for x in range (0,24):
        RandCharGen = random.randint(0,len(characters)-1) 
        RandChar = characters[RandCharGen]
    

    或者这个:

    for x in range (0,24):
        RandChar = random.choice(characters)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 2016-01-06
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多