2013-03-09 47 views
1

我編寫了一些代碼來評估x和y之間的整數,並檢查整數3和5是否可分。 這是代碼。如何正確測試python中的可分性

def div_3_5(start, end): 
    result = 0 
    result2 = 0 
    result3 = 0 
    while start < end: 
     result2 = start + result 
     result = result2 - start + 1 
     if result2 % 3==0 or 5==0: 
      result3 = result3 + 1 
     else: 
      result3 = result3 + 0 
     return result3 

我只是個初學者,但除非我已經使用了「或」語句不正確或檢查整除錯誤似乎一切都在過程中的代碼罰款。這使我想到了主要問題。任何幫助,將不勝感激。

+0

不錯的重寫方式FizzBu​​zz:P – 2013-03-09 11:49:08

+0

可能重複[你如何檢查一個數是否可​​以被另一個數(Python)整除?](http://stackoverflow.com/questions/8002217/how-do - 你檢查一個數字是否可以被另一個數字python) – Nix 2013-03-09 11:49:09

+0

這是http://projecteuler.net/problem=1? – 2013-03-09 11:49:36

回答

5

你需要這樣做:

if result2 % 3 == 0 or result2 % 5 == 0: 

否則,它被解析爲if (result2 % 3==0) or (5==0):,這顯然是錯誤的,因爲5 != 0

,你必須要檢查可分多個數字,可以是相當有用的另一項建議:

if any(result2 % i == 0 for i in (3, 5)): 

這是你彷彿是試圖做(項目一個更簡單的版本歐拉問題1):

def div_3_5(start, end): 
    return sum(1 for i in range(start, end+1) if i % 3 == 0 or i % 5 == 0) 

或者,使用德摩根定律和事實0False -ish值:

def div_3_5(start, end): 
    return sum(1 for i in range(start, end+1) if not (i % 3 and i % 5)) 
+0

+1爲忍者而戰。有時候,Python可能會有點*英語;你必須記住Python不會理解你的想法。 – 2013-03-09 11:50:59