""" Урок 19. Summary Session 5 — весь код примеров одним файлом. Источник: subjects/python-fundamentals/course/lessons/19-summary-session-5/examples.html Файл собран автоматически (tools/build_lesson_examples.py): правьте страницу урока. Запуск: python lesson-19.py """ # ==================================================================== # Пример 1. Перебор строки # ==================================================================== text = "Python" for letter in text: print(letter) # P # y # t # h # o # n # ==================================================================== # Пример 2. Разные варианты range # ==================================================================== print("range(5):") for i in range(5): print(i, end=" ") print() print("range(2, 6):") for i in range(2, 6): print(i, end=" ") print() print("range(1, 10, 2):") for i in range(1, 10, 2): print(i, end=" ") print() print("range(10, 0, -2):") for i in range(10, 0, -2): print(i, end=" ") print() # range(5): # 0 1 2 3 4 # range(2, 6): # 2 3 4 5 # range(1, 10, 2): # 1 3 5 7 9 # range(10, 0, -2): # 10 8 6 4 2 # ==================================================================== # Пример 3. break, continue, else # ==================================================================== for letter in "Python": if letter == "h": break print(letter, end=" ") else: print("Буква h не найдена") print() for letter in "Python": if letter == "h": continue print(letter, end=" ") print() for letter in "abc": if letter == "z": break print(letter, end=" ") else: print("- цикл прошёл без break") # P y t # P y t o n # a b c - цикл прошёл без break # ==================================================================== # Пример 4. Вложенные циклы # ==================================================================== words = ["cat", "dog", "bird"] for word in words: print(f"Word: {word}") for letter in word: print(letter, end=" ") print() # ==================================================================== # Пример 5. Создание списков и срезы # ==================================================================== empty = [] also_empty = list() chars = list("python") values = list(range(0, 10, 2)) print(empty, also_empty, chars, values) numbers = [0, 1, 2, 3, 4, 5, 6] print(numbers[1:4]) # [1, 2, 3] print(numbers[::2]) # [0, 2, 4, 6] print(numbers[::-1]) # [6, 5, 4, 3, 2, 1, 0] print(numbers[-4:-1]) # [3, 4, 5] # [] [] ['p', 'y', 't', 'h', 'o', 'n'] [0, 2, 4, 6, 8] # [1, 2, 3] # [0, 2, 4, 6] # [6, 5, 4, 3, 2, 1, 0] # [3, 4, 5] # ==================================================================== # Пример 6. Изменение списка: по индексу и по срезу # ==================================================================== items = ["apple", "banana", "cherry"] items[1] = "blueberry" print(items) # ['apple', 'blueberry', 'cherry'] numbers = [10, 20, 30, 40, 50] numbers[1:3] = [200, 300] print(numbers) # [10, 200, 300, 40, 50] # ==================================================================== # Пример 7. Операции со списками # ==================================================================== list1 = [1, 2, 3] list2 = [4, 5, 6] print(list1 + list2) # [1, 2, 3, 4, 5, 6] print([0] * 5) # [0, 0, 0, 0, 0] numbers = [1, 2, 3, 4, 5] print(3 in numbers) # True print(6 in numbers) # False print(len(numbers)) # 5 # ==================================================================== # Пример 8. Чётные и нечётные числа в диапазоне # ==================================================================== start = 1 # результат int(input("Введите начало диапазона: ")) end = 10 # результат int(input("Введите конец диапазона: ")) even = [] odd = [] for number in range(start, end + 1): if number % 2 == 0: even.append(number) else: odd.append(number) print("Четные:", *even) print("Нечетные:", *odd) # Четные: 2 4 6 8 10 # Нечетные: 1 3 5 7 9 # ==================================================================== # Пример 9. enumerate(): индекс и значение вместе # ==================================================================== fruits = ["apple", "banana", "cherry"] for index, fruit in enumerate(fruits): print(f"{index}: {fruit}") # 0: apple # 1: banana # 2: cherry # ==================================================================== # Пример 10. List comprehension: короткая запись фильтра # ==================================================================== numbers = [1, 2, 3, 4, 5, 6] even_numbers = [n for n in numbers if n % 2 == 0] print(even_numbers) # [2, 4, 6] # то же самое обычным циклом even_numbers_loop = [] for n in numbers: if n % 2 == 0: even_numbers_loop.append(n) print(even_numbers_loop == even_numbers) # True # ==================================================================== # Пример 11. Изменяемость: список можно менять, строку — нет # ==================================================================== numbers = [1, 2, 3] numbers[0] = 100 print(numbers) # [100, 2, 3] text = "hello" try: text[0] = "H" except TypeError as error: print(f"Ошибка: {error}") # Ошибка: 'str' object does not support item assignment # ==================================================================== # Пример 12. Ловушка: изменение списка во время итерации # ==================================================================== tasks = ["done", "done", "draft"] for task in tasks: if task == "done": tasks.remove(task) print("После некорректного удаления:", tasks) # После некорректного удаления: ['done', 'draft'] # правильный способ: собрать новый список, не трогая исходный во время обхода tasks = ["done", "done", "draft"] tasks_left = [task for task in tasks if task != "done"] print("Через генератор списка (правильно):", tasks_left) # Через генератор списка (правильно): ['draft']