Maxr=-1000 minr=1000 summa=0 n=int(input("Введите количество учеников")) for i in range(n): r=int(input("Введите рост ученика")) summa=summa+r maxr=max(r,maxr) minr=min(r,minr) print("Средний рост учеников ", ) print("Максимальный рост ученика ", ) print("Минимальный рост ученика ", )
Ответ нейросети
23 марта 2026 19:28
Вот подробное решение задачи на исправление и пояснение, адаптированное для средней школы.
Что было не так в исходном коде
- Неправильно организован цикл. Тело цикла должно быть с отступами внутри for.
- Инициализация maxr и minr не самая надежная. Лучше брать первый введённый рост за начальное значение, чем полагаться на константы (-1000 и 1000).
- В выводе print не были переданы вычисляемые значения (пустые скобки после текста).
- Можно сделать расчёт среднего за одну проходку, не хранить все данные в списке, чтобы экономить память.
Пошаговый план
- Считать количество учеников n.
- Если n > 0:
- Считать первый рост отдельно и задать summa, maxr, minr равными этому значению.
- Затем для оставшихся учеников (с 2-го по n-й) считывать рост, накапливать сумму и обновлять максимум и минимум.
- Вычислить средний рост как summa / n.
- Если n == 0 — обработать случай отдельно (например, вывести сообщение или задать значения по умолчанию).
- Вывести средний, максимальный и минимальный рост.
Ниже приведён исправленный и надёжный вариант кода (однопроходной, без хранения всех значений):
Код n = int(input("Введите количество учеников: "))
summa = 0 maxr = None minr = None
if n > 0: # Считываем рост первого ученика r = int(input("Введите рост ученика 1: ")) summa = r maxr = r minr = r
# Обрабатываем оставшихся учеников
for i in range(2, n + 1):
r = int(input(f"Введите рост ученика {i}: "))
summa += r
if r > maxr:
maxr = r
if r < minr:
minr = r
srednee = summa / n
else: # Если учеников нет srednee = 0 maxr = None minr = None
print("Средний рост учеников", srednee) print("Максимальный рост ученика", maxr) print("Минимальный рост ученика", minr)
Пояснение к коду
- maxr и minr инициализируются значением первого введённого роста, поэтому на их корректность не влияют заранее заданные константы.
- В цикле мы читаем рост каждого ученика и сразу обновляем сумму, максимум и минимум.
- Средний рост рассчитывается как сумма делённая на количество учеников: summa / n. Если n = 0, средний рост устанавливаем в 0, а maxr/minr в None, чтобы явно показать отсутствие данных.
- Ввод для каждого ученика делает подсказки вида “Введите рост ученика i”, что удобно для пользователя.
Дополнительная альтернативная версия (без одной из веток кода) Если хочется ещё проще и не разделять первый элемент отдельно, можно использовать начальные значения и функции max/min, но в таком случае нужно аккуратно обрабатывать пустой ввод и, возможно, использовать список. Ниже короткий вариант с минимальными изменениями, но всё равно без констант:
n = int(input("Введите количество учеников: "))
summa = 0 heights = []
for i in range(n): r = int(input(f"Введите рост ученика {i+1}: ")) heights.append(r) summa += r
if heights: srednee = summa / n maxr = max(heights) minr = min(heights) else: srednee = 0 maxr = None minr = None
print("Средний рост учеников", srednee) print("Максимальный рост ученика", maxr) print("Минимальный рост ученика", minr)
Но первый вариант с одной проходкой и без списка обычно предпочтительнее для школьной задачи.
Если нужно, могу адаптировать решение под конкретный класс или уровень сложности (например, добавить обработку ошибок ввода или форматированный вывод с двумя знаками после запятой).
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



