获取“IndexError:列表索引超出范围”

时间:2014-11-20 10:09:00

标签: python random indexing range out

我想知道为什么会出现这个错误,IndexError:列表索引超出范围。如果需要完整的程序,那么我将上传,但错误出现在代码的这一部分。

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

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

2 个答案:

答案 0 :(得分:1)

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

但是random还有一个返回序列的随机成员的函数(例如str,tuple或list),因此使用它来选择随机运算符是合适的。例如,

#! /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是标准模块的名称。将该名称用于您自己的变量并不是错误,但如果您确实要导入该模块,肯定会导致问题。而阅读代码的人也会感到困惑。

答案 1 :(得分:0)

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

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