Среднее значение последовательности
Вы решили задачу. Теперь можно сравнить подходы.
Для среднего нужны сумма и число элементов до первого нуля.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Один проход без хранения последовательности
Каждое ненулевое число увеличивает сумму и счётчик. Среднее вычисляется после завершения ввода.
total = count = 0
while True:
x = int(input())
if x == 0:
break
total += x
count += 1
print(total / count)
Время: O(n). Память: O(1) числовых переменных.
Другой способ: Сохранение и обработка списка
Сохраняем элементы, затем используем sum и len. Это проще для дальнейшей повторной обработки, но требует линейной памяти.
a = []
while True:
x = int(input())
if x == 0:
break
a.append(x)
print(sum(a) / len(a))
Время: O(n). Память: O(n) для сохранённой последовательности.
На что обратить внимание
- Завершающий ноль не включается в количество.
- Среднее определено только для непустой последовательности.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.