Бран · продюсер «Хроник Пограничья»
Финансисты прислали три суммы и карточку одной покупки. Не хочу заводить переменные
amount1,amount2,amount3для каждой новой строки. Собери данные так, чтобы я мог спросить «первая сумма» и «платформа покупки», не перепутав одно с другим.
В предыдущем уроке ты дал имена отдельным значениям. Теперь положишь связанные значения в один контейнер. Суммы удобно хранить по порядку, а поля покупки лучше подписать именами.
Данные в уроке учебные: три суммы 499, 199, 990 и одна карточка покупки.
Три суммы под одним именем
Запусти отдельную ячейку:
amounts = [499, 199, 990]
print(amounts)
print(amounts[0])
print(amounts[2])
Она напечатает:
[499, 199, 990]
499
990
Квадратные скобки справа от = создают список. Запятые отделяют элементы. Имя amounts теперь обозначает весь список, а не одну сумму.
Скобки после имени, как в amounts[0], уже не создают список: они выбирают элемент. Число внутри называется индексом. Первая позиция имеет индекс 0, вторая 1, третья 2.
Представь три ящика с наклейками 0, 1, 2. Номер ящика не равен количеству ящиков: их три, но ящика 3 нет.
| Выражение | Значение | Почему |
|---|---|---|
amounts[0] | 499 | Первый элемент |
amounts[1] | 199 | Второй элемент |
amounts[2] | 990 | Третий элемент |
Обращение amounts[3] к этому списку остановит ячейку с IndexError. Python не вернёт ни ноль, ни None: ты запросил позицию, которой нет. Сначала проверь размер списка и нужный индекс, а не исправляй сумму догадкой.
Размер, сумма и сортировка
Для списка чисел уже есть готовые операции. Эта ячейка не зависит от предыдущих:
amounts = [499, 199, 990]
print(len(amounts))
print(sum(amounts))
print(sorted(amounts))
print(amounts)
Результат:
3
1688
[199, 499, 990]
[499, 199, 990]
len(amounts) считает элементы. sum(amounts) складывает числа. sorted(amounts) возвращает новый список по возрастанию. Исходный amounts остаётся в прежнем порядке, это видно по последней строке.
Как и у print, круглые скобки передают данные операции. В print(sum(amounts)) Python сначала вычисляет внутренний вызов sum(amounts), получает 1688, а затем передаёт число в print.
sum здесь напоминает SQL SUM, но работает с уже готовым списком в памяти. Значения в примере числовые: список строк "499" и "199" нельзя передать sum как суммы денег без преобразования.
Пустой список пишется []. Для него len([]) и sum([]) дают 0, а sorted([]) даёт []. Но первого элемента в нём нет, поэтому обращение по индексу 0 вызовет IndexError.
Практика · суммы покупок
В задаче лежит список из четырёх сумм. Напечатай первую сумму, число покупок, общий итог и отсортированный список. Циклы не нужны.
урок из курса
Урок из курса «Аналитика данных с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.