Python задача на числа
Как прописать корректное условие?
max = 1000
result = 0
for i in range(0,max):
if (i % 2 == 0 or i % 3 == 0) and (not i % 4 == 0):
result += i
print(result)
Ответы (2 шт):
Автор решения: Danis
→ Ссылка
кратных 2 и 3
поэтому нужен and а не or:
(i % 2 == 0 and i % 3 == 0)
Либо как сказал @AlexandrIvanov проверять кратность на 6:
i % 6 == 0
not i % 4 == 0
Место not лучше использовать !=:
i % 4 != 0
В итоге получаем:
if i % 6 and i % 4 != 0:
в одну строку:
print(sum([i for i in range(0, max) if i % 6 == 0 and i % 4 != 0]))
или так:
print(sum(filter(lambda x: x % 6 == 0 and x % 4 != 0, range(0, max))))
Автор решения: Щёбёнка Вокзальная
→ Ссылка
Если вы хотите, чтобы числа были кратны и 2, и 3 одновременно, например число 6, то вы должны вместо or написать and. Оператор or говорит программе, что числа должны быть либо кратны 2, например число 14, либо 3, например число 9. Короче говоря, код должен быть вот таким:
for i in range(0,max):
if (i % 2 == 0 and i % 3 == 0) and (not i % 4 == 0):
result += i