2013-03-09 3 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

Хороший способ перефразировать FizzBuzz: P –

+0

возможно дубликат [Как проверить, является ли число делится на другое число (Python)?] (Http://stackoverflow.com/questions/8002217/how-do -you-check-is-a-number-is-divisible-by-another-number-python) – Nix

+0

Будет ли это http://projecteuler.net/problem=1? –

ответ

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)): 

Это гораздо проще вариант того, что вы, кажется, пытается сделать (Project Эйлер задача 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) 

Или, используя законы де Моргана и тот факт, что 0 является False -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 не будет читать ваш ум. –

Смежные вопросы