我想知道为什么会出现这个错误,IndexError:列表索引超出范围。如果需要完整的程序,那么我将上传,但错误出现在代码的这一部分。
import random
Sign = ["+-*"]
num = int(random.random()*2)
operator = (Sign[num])
digit = int(random*10)
这是为了输出数组的随机符号。
答案 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 = ["+", "-", "*"]