Сумма и среднее
Теперь, когда вы умеете проходить по списку, давайте посмотрим, для чего циклы нужны чаще всего. Первый шаблон — сложить всё вместе. Допустим, у вас есть цены товаров в корзине, и вы хотите узнать итоговую сумму:
prices = [120, 45, 300, 85]
total = 0
for price in prices:
total += price
print("Итого:", total)Итого: 550Переменная total накапливает сумму. Она начинается с 0, потому что пока вы ничего не сложили, сумма равна нулю. На каждой итерации total += price прибавляет одну цену: после первой итерации total равно 120, затем 165, 465 и, наконец, 550.
Важно, где стоит каждая строка:
total = 0стоит перед циклом, чтобы выполниться только один раз. Внутри цикла эта строка на каждой итерации сбрасывала быtotalв 0, и в конце вtotalосталась бы только последняя цена,85.print()стоит после цикла, без отступа, когда сумма уже готова. С отступом, внутри цикла, он выводил бы каждую промежуточную сумму: 120, 165, 465, 550.
Среднее — это сумма, делённая на количество значений, а количество значений — это длина списка:
average = total / len(prices)
print("Среднее:", average)Среднее: 137.5Используйте len(prices), а не число 4. Когда вы добавите в список ещё одну цену, среднее по-прежнему будет верным. И помните, что / всегда даёт дробное число: среднее, равное 40, выведется как 40.0.
Складывать числа из списка нужно так часто, что в Python для этого есть короткий путь — функция sum():
prices = [120, 45, 300, 85]
print(sum(prices))550Зачем тогда учить цикл? Потому что он умеет больше, чем sum(). В цикле вы сами решаете, что прибавлять: например, с помощью if можно сложить только цены выше 100.
И ещё одна ловушка: не называйте свою переменную sum. Строка sum = 0 сработает, но она скроет функцию sum() из Python, и вызов sum(prices) позже завершится ошибкой TypeError: 'int' object is not callable. Поэтому здесь переменная называется total. То же относится к max, min, len и list.
Задание
- 1
Список
reading_minutesхранит, сколько минут вы читали в каждый день одной недели. Создайте переменнуюtotalсо значением0. Затем пройдите по списку цикломforи прибавьте каждое значение кtotalс помощью+=. - 2
После цикла выведите сумму с помощью
print("Итого:", total). Вывод:Итого: 280. - 3
В конце программы создайте переменную
averageсо средним значением:total, делённое на длину списка. Выведите его в видеСреднее: 40.0.