Шешімі: Среднее трёхзначных чисел
Напишите программу, которая в последовательности натуральных чисел находит среднее арифметическое трёхзначных чисел или сообщает, что таких чисел нет, выводя NO. На вход подаётся последовательность натуральных чисел, количество которых неизвестно. Последовательность заканчивается числом 0; это число является признаком окончания ввода и не входит в последовательность.
Количество введённых чисел не превышает 20, значения чисел не превышают 1500. Программа должна вывести среднее арифметическое всех трёхзначных чисел или NO, если таких чисел нет. В ответе приведите программу и кратко объясните её работу.
Шешім по шагам
6 қадамИнициализируем переменные для суммы трёхзначных чисел и их количества.
$$sum = 0, count = 0$$Считываем очередное число. Если оно равно 0, завершаем цикл, поскольку 0 не входит в последовательность.
$$while x \ne 0$$Проверяем, является ли число трёхзначным. Для натуральных чисел это выполняется при условии от 100 до 999 включительно.
$$100 \leq x \leq 999$$Для каждого трёхзначного числа добавляем его к сумме и увеличиваем количество таких чисел на единицу.
$$sum := sum + x,\quad count := count + 1$$После окончания ввода проверяем наличие трёхзначных чисел. Если их нет, выводим NO, иначе вычисляем среднее арифметическое.
$$\overline{x} = \dfrac{sum}{count}$$Один из корректных нұсқа программы:
summa = 0
kol = 0
while True:
x = int(input())
if x == 0:
break
if 100 <= x <= 999:
summa += x
kol += 1
if kol == 0:
print('NO')
else:
print(summa / kol)
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Учитывают число 0 в последовательности.
Проверяют только условие x < 1000 и включают однозначные или двузначные числа.
Выводят сумму вместо среднего арифметического.
Делят сумму на общее количество введённых чисел, а не только на количество трёхзначных.
Не обрабатывают случай отсутствия трёхзначных чисел.