我正在开发一个随机的程序 列表中的单词并将它们组合成一个句子 但我一直收到错误:
File "test2.py", line 13, in generater
print list[z+2] ,
IndexError: list index out of range
这是我的代码:
def generater():
list = ["naji", "gaming", "gameplay", "start", "stuped", "awesome", "fast", "new", "racing", "shoting", "cool", "super"]
from random import randint
x = randint(0,11)
print list[x] ,
y = randint(0,11)
if y == x and y != 0 :
print list[y-1] ,
else :
print list[y] ,
z = randint(0,11)
if z == x or z == y and z < 8 :
print list[z+2] ,
elif z == x or z == y and z > 9 :
print list[z-5]
else :
print list[z]
generater()
答案 0 :(得分:2)
您的列表包含12个项目,因此有效索引范围为0到11.
您的rand生成器返回0到10之间的值。
10 + 2超过11 - 所以你试图访问列表末尾的列表索引。
答案 1 :(得分:2)
问题出在你的陈述中
if z == x or z == y and z < 8:
尝试将括号括起来(z == x或z == y)。如果z == x,您的程序不能确保z&lt; 8.您可以输入
进行测试if 1 or 1 and 0:
print('TRUE!')
并将输出与
进行比较if (1 or 1) and 0:
print('TRUE!')
简而言之,你说“a或(b和c)”,但你想表达“(a或b)和c。”
我不确定我是否理解你的程序的目的,但只要你保证你的z值小于8,你就不应该超出范围。