Учитель физкультуры задался вопросом, на сколько в среднем его подопечные выросли за прошедший месяц.
Напишите программу, которая определяет, на сколько изменился средний рост учеников в классе.
Формат ввода
Вводится информация о детях в формате:
<Имя> <Рост месяц назад> <Рост сейчас>
Формат вывода
Одно число — ответ на вопрос задачи.
Ответ округлите до целых. Например, функцией round.
Пример
Ввод
Аня 160 162
Боря 165 172
Вова 165 165Вывод
3Ввод
Аня 161 165
Боря 167 172
Вова 165 166
Дима 173 178Вывод
4Решение
Эта задача не сильно сложнее предыдущей, но в ней есть свой нюанс, связанный с особенностями работы методов read() и readlines().
Дело в том, что stdin.read().split(‘\n’) в некоторых ситуациях (например если в конце последней строки нажать enter и только потом послать код окончания ввода) породит пустую строку, в то время как при использовании stdin.readlines() этого не произойдет.
В остальном, пока есть что читать, считываем строку, распаковываем ее в переменные, считаем разницу и накапливаем ее в сумму разниц роста.
По окончании цикла делим накопленную сумму на количество строк и округляем.
Второй метод решения чуть более универсален, потому что позволяет пропускать ошибочно введенные пустые строки.
Посмотреть код
Решение
# readlines()
from sys import stdin
delta = 0
strings = [line.rstrip('\n') for line in stdin.readlines()]
for string in strings:
_, then, now = string.split()
delta += int(now) - int(then)
print(round(delta / len(strings)))Решение
# read
from sys import stdin
strings = stdin.read().split('\n')
delta = 0
count = 0
for string in strings:
if string:
_, then, now = string.split()
delta += int(now) - int(then)
count += 1
print(round(delta / count))
from sys import stdin
i = 0
summ = 0
for line in stdin.readlines():
i += 1
x, y, z = line.split()
summ += int(z) — int(y)
print(round(summ / i))
а если так?
По сути и мои два и ваш способ реализованы на одном и том же принципе — накоплении разницы роста с дальнейшим ее делением на количество подопечных.
Я вот таким способом сделал, механизм тот же, но чуть короче:
from sys import stdin
elements = []
for line in stdin:
person = line.rstrip(‘\n‘).split(‘ ‘)
elements.append(int(person[—1]) — int(person[—2]))
print(round(sum(elements) / len(elements)))