此代碼是用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