2017-04-20 65 views
0

我應該寫一個程序來改變一個字符串,如果這個位置編號不是素數,但我似乎無法弄清楚如何使第一個位置,例如位置2 ,prime,並使剩下的可以被2整除的位置變成N.下面是我現在擁有的,我是一個int錯誤。如果有人能幫助我,我會很感激。謝謝尋找一個範圍內的素數python

while True: 
    number = int(input("Enter a number greater than 10: ")) 
    if number < 10: 
     print("Invalid input. Try again") 
    else: 
     break 

n_list = ["P"] * (number + 1) 
n_list[0] = "N" 
n_list[1] = "N" 

for i in range(n_list): 
    if int(n_list[i]) % 2 == 0: 
     n_list[i] = "N" 

print(n_list) 
+0

我想如果你沒有逐字地粘貼你的作業,你會吸引更少的優惠。在那之後,OP實際上提供了自己的代碼和一些關於它卡住的地方的描述。 – timgeb

+0

(但是,「我收到錯誤」不是可接受的錯誤說明) – timgeb

回答

1

首先,由於範圍內取整數,而不是一臺發電機,你可能會得到一個錯誤,請嘗試而不是for i in n_listfor i in range(len(n_list))。至於問題的解決方法,你不需要從2到n循環,有一個更聰明的方法。但是我們不是爲了解決這個問題,而是爲了引導您找到您可能向我們展示的最終錯誤。就這樣說,祝你好運!

PS: 多一點指導 Sieve of Eratosthenes

編輯: ,我指的錯誤是

TypeError: 'list' object cannot be interpreted as an integer 
0

我不想給你答案,你的功課,但我確實想幫忙,所以我會引導你一點。

我看到2個問題與您提供的內容。首先,您正在爲您的範圍使用不正確的變量。你想要一個數字,而不是一個列表。

其次,如果「P」是可以被整除的,則不能進行比較。2.只能檢查一個數是否。

希望這會有所幫助,祝你好運。

編輯:澄清,還有更多的問題,但這兩個會給出錯誤。