Решение: Среднее чисел на единицу
Напишите программу, которая в последовательности натуральных чисел находит среднее арифметическое чисел, оканчивающихся на единицу, или сообщает, что таких чисел нет. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода).
Количество чисел не превышает 100. Введённые числа по модулю не превышают 300.
Программа должна вывести среднее арифметическое чисел, оканчивающихся на единицу, или вывести NO, если таких чисел в последовательности нет.
Решение по шагам
4 шагаСчитываем очередное число. Если оно равно 0, ввод завершается.
$$x = 0$$Для каждого ненулевого числа проверяем, оканчивается ли оно на единицу, используя остаток от деления на 10. Подходящее число добавляем к сумме и увеличиваем счётчик.
$$x \bmod 10 = 1$$Если подходящие числа найдены, выводим их среднее арифметическое. Иначе выводим NO.
$$\overline{x} = \dfrac{S}{n}$$Один из возможных вариантов программы:
s = 0
count = 0
while True:
x = int(input())
if x == 0:
break
if x % 10 == 1:
s += x
count += 1
if count == 0:
print('NO')
else:
print(s / count)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Учитывают число 0 как элемент последовательности.
Проверяют делимость на 10 вместо проверки остатка 1.
Выводят сумму вместо среднего арифметического.
Не обрабатывают случай, когда подходящих чисел нет.
Используют целочисленное деление вместо обычного деления.