此代码是用Python 3编写的。我试图找到10001的素数。为什么函数在Python中返回错误“列表索引超出范围”?
#10001st prime number
mylist=[]
def prime_index(n):
for i in range(99**99):
for x in range(2, int(i**1/2)):
if i % x == 0:
return False
return True
mylist.append(i)
n=int(n+1)
print(mylist[n])
break
prime_index(10001)
当我运行,它说:“列表索引超出范围”,指的是print(mylist[n])
。 但是,我一直在mylist.append(i)
的路上添加素数。那么有人可以告诉我这里有什么问题,因为我不明白发生了什么。 99 ** 99是否太小?或者更细微的代码问题?
我认为当'print()'执行时''n的值会让你感到惊讶。将一些调试打印语句添加到您的代码中以确定执行时发生了什么;用这种方法你可以看你的代码运行。特别是,在执行print()之前打印出'n'的值,以便您可以看到代码尝试显示的数组中的索引。 – jefe2000
现在你的代码在mylist的长度为0时第一次到达违规行。 –
'range(99 ** 99)'产生一个与mylist无关的数字列表。 – DyZ