【问题标题】:List index out of range using randint使用 randint 列出超出范围的索引
【发布时间】:2018-12-30 13:03:35
【问题描述】:

我目前正在尝试在添加下一个项目之前尝试将一个随机项目(使用 randint)从一个列表附加到另一个列表。好吧,这可能是一种奇怪的表达方式,但我不确定如何描述它——我道歉。因此,这是我当前的代码和我想要的输出:

代码:

import random

lineIDPart3 = []
lineIDSpace6 = []
lineIDSpace6Poss = ["4", "0", "C", "8"]
lineIDSpace6Num = random.randint(0, 3)
while len(lineIDPart3) < 34:
    lineIDPart3.append(lineIDSpace6Poss[lineIDSpace6Num])
    if lineIDSpace6Num < 4:
        lineIDSpace6Num += 1
    else:
        lineIDSpace6Num = 0
print(lineIDPart3)

我想要的输出示例:

["C", "8", "4", "0", "C", "8"...]

我对这个很困惑,所以任何和所有的帮助都非常感谢!

【问题讨论】:

  • 将 lineIDSpace6Num
  • 你现在得到什么输出?

标签: python arrays python-3.x random


【解决方案1】:

这很简单。因为你的if statement&lt;4,然后它+=1,所以这意味着它会在循环中从3增长到4。只是简单地改变

 if lineIDSpace6Num < 4:

 if lineIDSpace6Num < 3:

您的问题将得到解决。

【讨论】:

    【解决方案2】:
    size=34
    listy=["4", "0", "C", "8"]
    random.shuffle(listy)
    newlist=(listy*(int(size/len(listy))+len(listy)))[:size]
    

    这是一种更简单的方法

    【讨论】:

    • 我认为这是不对的。看看他的代码,他想保留订单。并非都是随机的。
    • 哦,我明白了。我会解决的
    【解决方案3】:

    在这种情况下,你的整数太远了:

    "if lineIDSpace6Num &lt; 4:" (在这种情况下,如果 lineIDSpace6Num 等于 3,则允许 lineIDSpace6Num 递增 1)

    尝试将数字从 4 更改为 3(或者最好更改为 (len(lineIDSpace6Poss)-1),以防您决定要在生成列表中添加更多字符);因为您的数组只有 4 个元素,这意味着您的最大值必须为 3,否则您将遇到 index out of range 异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      • 1970-01-01
      相关资源
      最近更新 更多