【问题标题】:Getting "IndexError: list index out of range"获取“IndexError:列表索引超出范围”
【发布时间】:2015-01-18 03:39:28
【问题描述】:

我想知道为什么会出现这个错误,IndexError: list index out of range。如果需要完整的程序,我会上传,但错误在这部分代码。

import random
Sign = ["+-*"]
num = int(random.random()*2)
operator = (Sign[num])
digit = int(random*10)

这是为了输出数组的随机符号。

【问题讨论】:

    标签: python random indexing range out


    【解决方案1】:

    random.random() 返回一个大于 0 且小于 1 的浮点数,因此 int(random.random()*2) 只会产生 0 或 1。random 模块有一个特定的函数来返回指定范围内的随机整数range,它比“滚动自己的”随机整数算法更易于使用(并且结果通常更统一)。

    但是random 也有一个函数可以返回一个序列的随机成员(例如一个字符串、元组或列表),所以使用它来选择你的随机运算符是合适的。例如,

    #! /usr/bin/env python
    
    import random
    
    sign = "+-*"
    
    for i in range(10):
        op = random.choice(sign)
        digit = random.randint(0, 9)
        print op, digit
    

    典型输出

    + 7
    * 9
    + 0
    * 6
    * 8
    * 5
    + 0
    - 1
    - 6
    - 3
    

    我在该代码中将变量名称更改为op,因为operator 是标准模块的名称。为您自己的变量使用该名称不是错误,但如果您确实想要导入该模块,它肯定会导致问题。阅读您的代码的人也会感到困惑。

    【讨论】:

      【解决方案2】:

      您的列表仅包含一个元素。试试这个:

      Sign = ["+", "-", "*"]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-31
        • 2015-06-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多