Создание циклов с while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Знакомство с программой «Симулятор трехлетнего ребенка» . . . . 85
Разбираемся в работе цикла while . . . . . . . . . . . . . . . . . . . . . . . . . 86
Инициализация управляющей переменной . . . . . . . . . . . . . . . . . . 86
Проверка значения управляющей переменной . . . . . . . . . . . . . . . 87
Изменение значения управляющей переменной . . . . . . . . . . . . . . 87
Борьба с бесконечными циклами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Знакомство с программой «Проигранное сражение» . . . . . . . . . . . 88
Трассировка программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Условия, которые могут становиться ложными . . . . . . . . . . . . . . . 89
Значения как условия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Знакомство с программой «Метрдотель» . . . . . . . . . . . . . . . . . . . . 90
Истинные и ложные значения . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Намеренное создание бесконечных циклов . . . . . . . . . . . . . . . . . . . . . . . 92
Знакомство с программой «Привередливая считалка» . . . . . . . . . . 93
Выход из цикла с помощью команды break . . . . . . . . . . . . . . . . . . 93
Команда continue и возврат к началу цикла . . . . . . . . . . . . . . . . . . 94
Как пользоваться командами break и continue . . . . . . . . . . . . . . . . 94
Составные условия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Знакомство с программой «Эксклюзивная сеть» . . . . . . . . . . . . . . 95
Логический оператор not . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Логический оператор and . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Логический оператор or . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Планирование программ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Алгоритмы на псевдокоде . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Пошаговая доработка алгоритма . . . . . . . . . . . . . . . . . . . . . . . . . 100
Вернемся к игре «Отгадай число» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
План программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Начальный блок комментариев . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Импорт модуля random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Объяснение правил . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Установка начальных значений . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Цикл отгадывания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Поздравления победителю . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Ожидание выхода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Глава 4. Циклы с оператором for, строки и кортежи.
Игра «Анаграммы» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Знакомство с игрой «Анаграммы» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Применение циклов for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Знакомство с программой «Слово по буквам» . . . . . . . . . . . . . . . 106
Разбираемся в работе for-цикла . . . . . . . . . . . . . . . . . . . . . . . . . 107
Создание for-цикла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Счет с помощью for-цикла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Знакомство с программой «Считалка» . . . . . . . . . . . . . . . . . . . . . 108
Счет по возрастанию . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Счет по числам, кратным пяти . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Счет по убыванию . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Операторы и функции для работы с последовательностями:
применение к строкам . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Знакомство с программой «Анализатор текста» . . . . . . . . . . . . . . 111
Применение функции len() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Применение оператора in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Индексация строк . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Знакомство с программой «Случайные буквы» . . . . . . . . . . . . . . 113
Позиции с положительными номерами . . . . . . . . . . . . . . . . . . . . 113
Позиции с отрицательными номерами . . . . . . . . . . . . . . . . . . . . . 114
Случайный элемент строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Что такое неизменяемость строк . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Конструируем новую строку . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Знакомство с программой «Только согласные» . . . . . . . . . . . . . . 117
Создание констант . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Создание новых строк из существующих . . . . . . . . . . . . . . . . . . . 119
Срезы строк . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Знакомство с программой «Резчик пиццы» . . . . . . . . . . . . . . . . . 120
Значение None . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Разбираемся в срезах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Создание срезов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Сокращения в записи срезов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Создание кортежей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Знакомство с программой «Арсенал героя» . . . . . . . . . . . . . . . . . 124
Создание пустого кортежа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Кортеж как условие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Создание непустого кортежа . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Вывод элементов кортежа на экран . . . . . . . . . . . . . . . . . . . . . . 126
Перебор элементов кортежа . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Использование кортежей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Знакомство с программой «Арсенал героя 2.0» . . . . . . . . . . . . . . 127
Настройка программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Применение функции len() к кортежам . . . . . . . . . . . . . . . . . . . . 128
Применение оператора in к кортежам . . . . . . . . . . . . . . . . . . . . . 128
Индексация кортежей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Срезы кортежей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Неизменяемость кортежей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Сцепление кортежей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Вернемся к игре «Анаграммы» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Настройка программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Как сформировать анаграмму . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Создание пустой строки для анаграммы . . . . . . . . . . . . . . . . . . . 132
Настройка цикла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Выбор случайной позиции в слове . . . . . . . . . . . . . . . . . . . . . . . 132
Новая версия jumble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Новая версия word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Программа приветствует игрока . . . . . . . . . . . . . . . . . . . . . . . . . 133
Получение пользовательского ввода . . . . . . . . . . . . . . . . . . . . . . 133
Поздравление за правильно отгаданное слово . . . . . . . . . . . . . . 133
Конец игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Глава 5. Списки и словари. Игра «Виселица» . . . . . . . . . . . . . . . . . 135
Знакомство с игрой «Виселица» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Использование списков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Знакомство с программой «Арсенал героя 3.0» . . . . . . . . . . . . . . 137
Создание списка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Применение функции len() к спискам . . . . . . . . . . . . . . . . . . . . . 138
Применение оператора in к спискам . . . . . . . . . . . . . . . . . . . . . . 138
Индексация списков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Срезы списков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Сцепление списков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Изменяемость списков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Присвоение нового значения элементу, выбранному по индексу . . . .140
Присвоение новых значений срезу списка . . . . . . . . . . . . . . . . . . 140
Удаление элемента списка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Удаление среза списка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Применение списковых методов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Знакомство с программой «Рекорды» . . . . . . . . . . . . . . . . . . . . . 141
Настройка программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Отображение меню . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Выход из программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Отображение списка рекордов . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Добавление рекорда . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Удаление рекорда . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Сортировка списка рекордов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Обработка ошибочного выбора . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Ожидаем пользователя . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Когда использовать кортежи, а когда — списки . . . . . . . . . . . . . . . . . . . 145
Последовательности с вложением . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Знакомство с программой «Рекорды 2.0» . . . . . . . . . . . . . . . . . . 146
Создаем последовательность с вложением . . . . . . . . . . . . . . . . . 147
Доступ к вложенным элементам . . . . . . . . . . . . . . . . . . . . . . . . . 148
Распаковка последовательности . . . . . . . . . . . . . . . . . . . . . . . . . 148
Настройка программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Вывод результатов, содержащихся во вложенных кортежах . . . . 149
Добавление результата как вложенного кортежа . . . . . . . . . . . . 150
Обработка ошибочного выбора . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Ожидаем пользователя . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Распределенные ссылки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Использование словарей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Знакомство с программой «Переводчик с гикского на русский» . . . 153
Создание словарей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Доступ к значениям в словаре . . . . . . . . . . . . . . . . . . . . . . . . . . 154