我正在研究一個複製Eratosthenes Sieve的類,並且已獲取給出的錯誤消息標題。以下是我的代碼,更多問題隨之而來。Python 3.x - 無法修復錯誤:「切片索引必須是整數或無或有__index__方法」+更多
class Sieve:
def __init__(self, max):
if max < 0:
raise RuntimeError
else:
self.numbers = [([False] * 2) + ([True] * (max - 1))]
def findPrimes(self):
for i in self.numbers:
if self.numbers:
for j in self.numbers[i:]:
if j % i == 0:
self.numbers[j] = False
else:
None
else:
None
def howMany(self): ##Must use reduce
reduce((lambda i: True if numbers else False), self.numbers, self.numbers[2:])
def toList(self):
T = [L[i] for i in self.numbers]
return print(self.numbers)
所以在功能findPrimes(個體),特別是在線路14,I得到標題所述的錯誤消息。問題的根源究竟是什麼?
此外我想問幾個關於我的方法的問題。在findPrimes中,我試圖訪問列表中的每個元素。如果確實如此,我想採用索引號(i)並訪問所有其他指數(i,i + i,i + i + i等)的倍數。我還沒有完全測試過,但我覺得我的語法錯了。任何幫助表示讚賞。
最後,我需要在方法howMany中使用reduce函數來確定列表中有多少元素爲真,並返回該數字。再次,任何有關該主題的知識非常感謝。
謝謝大家:)
運行腳本時,我得到'IndentationError:unexpected indent'。 –
檢查'self.numbers'。這不是你的想法。 – user2357112
@ user2357112恐怕我不明白你在想什麼。 –