РАЗБИРАЕМ ПО ШАГАМ
От идеи к работающему коду
Список хранит несколько значений в заданном порядке. На его основе сделаем меню: покажем варианты, получим номер пользователя и безопасно найдём выбранный элемент.
Сразу к запуску примера ↓
- 1Список значений
- 2Номер и индекс
- 3Проверка перед выбором
1. Создаём список
Элементы списка записываются в квадратных скобках через запятую. В gifts ниже три строки. len(gifts) возвращает количество элементов, а не номер последнего.
Список может хранить разные типы, но набор однородных данных проще обрабатывать. Отрицательные индексы отсчитывают элементы с конца. Пустой список [] — допустимое значение с длиной 0.
gifts = ["Робот", "Книга", "Конструктор"]print(gifts)print(len(gifts))2. Индекс начинается с нуля
gifts[0] — первый элемент, gifts[1] — второй. Индекс последнего равен len(gifts) - 1. Индекс -1 тоже обращается к последнему элементу непустого списка.
Обращение по индексу не ищет значение: оно берёт элемент с конкретной позиции. Индекс за пределами списка вызовет IndexError. У пустого списка нет ни первого, ни последнего элемента.
gifts = ["Робот", "Книга", "Конструктор"]print(gifts[0])print(gifts[-1])3. Пользовательский номер и индекс
В меню люди обычно считают с 1, а Python — с 0. Поэтому перед обращением вычитаем единицу из номера. Сначала проверяем 1 <= number <= len(gifts).
Проверка нужна и для 0: выражение gifts[number - 1] при нуле даст последний элемент, хотя пользователь ввёл неверный номер. Это логическая ошибка, даже если Python не сообщает об исключении.
gifts = ["Робот", "Книга", "Конструктор"]number = int(input("Номер подарка: "))if 1 <= number <= len(gifts): print(gifts[number - 1])else: print("Такого номера нет")4. Объединение и перебор
Оператор + соединяет два списка в новый список. Исходные списки при этом не меняются. Порядок сохраняется: сначала все элементы первого, затем второго.
Для меню можно перебрать индексы через range(len(...)) и показать index + 1. Позже используем enumerate, который выдаёт номер и элемент вместе.
names = ["Саша", "Маша"] + ["Барсик"]for index in range(len(names)): print(index + 1, names[index])Где легко ошибиться
- Считать, что первый индекс равен 1.
- Разрешить 0 или отрицательный номер в меню.
- Обратиться к последнему элементу пустого списка.
Проверь понимание: Какой индекс у третьего элемента списка?
2. Индекс равен пользовательскому номеру минус один.
