Решение: Сумма чисел, кратных 5 или 9
Напишите программу, которая в последовательности целых чисел вычисляет сумму всех чисел, кратных 5 или 9. Программа получает на вход целые числа, количество введённых чисел неизвестно. Последовательность чисел заканчивается числом 0: это признак окончания ввода, и в последовательность оно не входит. Количество чисел не превышает 20, а введённые числа по модулю не превышают 1500. Программа должна вывести одно число — сумму всех чисел, кратных 5 или 9.
| Входные данные | Выходные данные |
|---|---|
| −15 99 8 0 | 84 |
Решение по шагам
5 шаговСоздадим переменную для накопления суммы и присвоим ей начальное значение 0.
$$s = 0$$Будем считывать числа одно за другим, пока не встретится число 0.
$$while\ x \ne 0$$Для каждого числа проверим, делится ли оно на 5 или на 9 без остатка.
$$x \bmod 5 = 0\ \text{ или }\ x \bmod 9 = 0$$Если хотя бы одно условие выполнено, добавим число к сумме. После встречи с нулём выведем накопленную сумму.
$$s = s + x$$Один из возможных вариантов программы:
x = int(input())
s = 0
while x != 0:
if x % 5 == 0 or x % 9 == 0:
s += x
x = int(input())
print(s)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Добавляют в сумму число 0, хотя оно является только признаком окончания ввода.
Используют условие `and` вместо `or`.
Проверяют делимость только положительных чисел; остаток от деления позволяет корректно обработать и отрицательные числа.
Не считывают следующее число внутри цикла, из-за чего возникает бесконечный цикл.