【问题标题】: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 = ["+", "-", "*"]