2015-11-05 68 views
0

我已經決定我想在歐拉問題上工作,以提高我的Python技能,但我遇到了第一個問題。你看,我寫了一個我認爲會努力獲得答案的程序,並將它與位於here的解決方案頁面上的程序進行了比較。下面是我寫的代碼:在Python中的歐拉#1,寫程序,但得到了錯誤的答案

total = 0 

for x in range(1000): 
    if x % 5 != 0 and x % 3 != 0: 
     total += x 
print(total) 

這給了我答案266332,根據之前鏈接的解決方案時,正確的答案是233168。我不知道爲什麼我得到了錯誤的答案,任何幫助將不勝感激。謝謝!

+0

你總+ =行的需求預期。不知道這是否是一個複製粘貼問題,雖然 –

+0

如果它沒有縮進,它會產生一個'IndentationError'。 – TigerhawkT3

+0

啊,是的。您正在總結所有*號不是*倍數和3或5的數字 –

回答

1

你在你的德·摩根定律的應用缺少not

total = 0 

for x in range(1000): 
    if not (x % 5 != 0 and x % 3 != 0): 
     total += x 
print(total) 

not (x % 5 != 0 and x % 3 != 0)相當於x % 5 == 0 or x % 3 == 0,後者在您爲等效not x%5 or not x%3鏈接的頁面陳述。

+0

不要忘記縮進。 –

+0

@silentphoenix - 縮進怎麼回事? – TigerhawkT3

+0

我的歉意。沒有什麼是你的錯,但是OP有縮進問題。這可能是一個很好的事情,指出你的答案的其餘部分。 –

1

您正在使用錯誤的條件。當剩下的是0時,你必須測試嗎?與3和5.此外,你必須使用OR,而不是因爲你想要這兩個數字組。

如果你使用,你會得到只有那些既多的數字,3的倍數和多5

嘗試:

total = 0 

for x in range(1000): 
    if x % 5 == 0 or x % 3 == 0: 
     total += x 
print(total) 
+1

您應該解釋爲什麼@ Patrick的答案doesn' t工作,這一個,而不是隻是傾銷代碼 – 3Doubloons

+0

我認爲他解釋得很好,我現在看到,我只是在一個粗心的錯誤,如果。 –

0

一對夫婦的事情是錯誤的該程序。對於初學者,您的if聲明會檢查錯誤的情況 - 它會檢查它是否不能被3或5整除。它應該是if x%3==0 or x%5==0:

其次,您有一個縮進錯誤,因此沒有任何內容正在被if聲明。縮寫total+=x聲明。

你的最終代碼看起來像這樣:

total = 0 
for x in range(1000): 
    if x % 5 == 0 or x % 3 == 0: 
     total += x 
print(total) 

祝你好運,快樂編碼!

-1
  1. 試試這個:

    def sumOfMultiples(number): 
        sum = 0 
        for i in range(1,number): 
         if i % 2 == 0 or i % 3 == 0: 
          sum += i 
        return sum 
    
    print (sumOfMultiples(15)) 
    
相關問題