Г эддис Т.
Начинаем программировать на Python. — 5-е изд.: Пер. с англ. — СПб.: БХВ-Петербург,
2022. — 880 с.: ил.
ISBN 978-5-9775-6803-6
Изложены принципы программирования, с помощью которых читатель приобретет навыки алго
ритмического решения задач на языке Python, даже не имея опыта программирования. Дано краткое
введение в компьютеры и программирование. Рассмотрен ввод, обработка и вывод данных, управляю
щие структуры и булева логика, структуры с повторением, функции, файлы и исключения, списки и
кортежи, строковые данные, словари и множества, классы и ООП, наследование, рекурсия, программи
рование интерфейса, функциональное программирование и др.
Для облегчения понимания сути алгоритмов широко использованы блок-схемы, псевдокод и другие
инструменты. Приведено большое количество сжатых и практичных примеров программ. В каждой
главе предложены тематические задачи с пошаговым анализом их решения.
В пятом издании добавлена глава о программировании баз данных.
Для начинающих программистов,
старших школьников и студентов первых курсов
УДК 004.438 Python
ББК 32.973.26-018.1
Группа подготовки издания:
Руководитель проекта
Зав. редакцией
Компьютерная верстка
Оформление обложки
Евгений Рыбаков
Людмила Гауль
Ольги Сергиенко
Зои Канторович
Подписано в печать 03 03 22.
Формат 84хЮ 81/ 16. Печать офсетная. Уел. печ. л. 92,4
Тираж 2000 экз. Заказ № 3681
"БХВ-Петврбург", 191036. Санкт-Петербург, Гончарная ул., 20.
Отпечатано с готового оригинал-маквта
ООО "Принт-М", 142300, М О , г. Чехов, ул. Полиграфистов, д. 1
ISBN 978-0-13-592903-2 (англ.)
ISBN 978-5-9775-6803-6 (рус.)
О гл а в л е н и е .................................................................................................................................................XI
П ред и сл ови е.................................................................................................................................................1
Прежде всего управляющие структуры и только потом классы................................................................. 1
Изменения в пятом издании............................................................................................................................1
Краткий обзор глав...........................................................................................................................................2
Организация учебного материала...................................................................................................................6
Структурные элементы и условные обозначения книги...............................................................................6
Дополнительные материалы............................................................................................................................7
Электронный архив..........................................................................................................................................8
Об авторе...........................................................................................................................................................8
Г л а в а 1. Введение в ком пью теры и п рограм м и рован и е............................................................. 9
1.1
Введение.................................................................................................................................................9
1.2
Аппаратное и программное обеспечение..........................................................................................10
1.3
Как компьютеры хранят данные........................................................................................................15
1.4
Как программа работает.....................................................................................................................20
1.5
Использование языка Python..............................................................................................................28
Вопросы для повторения...............................................................................................................................32
Упражнения.....................................................................................................................................................36
Г л а в а 2. Ввод, обработка и в ы в о д ____________ ....................— .......... ............. .......... .............38
2.1
Проектирование программы...............................................................................................................38
2.2
Ввод, обработка и вывод....................................................................................................................43
2.3
Вывод данных на экран при помощи функции print........................................................................43
2.4
Комментарии.......................................................................................................................................46
2.5
Переменные.........................................................................................................................................47
2.6
Чтение входных данных с клавиатуры..............................................................................................57
2.7
Выполнение расчетов..........................................................................................................................61
2.8
Конкатенация строковых литералов..................................................................................................74
2.9
Подробнее об инструкции print.........................................................................................................76
2.10 Вывод на экран форматированного результата с помощью f-строк.............................................. 79
2.11 Именованные константы....................................................................................................................88
2.12 Введение в черепашью графику.........................................................................................................90
Вопросы для повторения.............................................................................................................................118
Упражнения по программированию...........................................................................................................124
Г л ав а 3. С труктуры п риняти я реш ения и булева л о г и к а ___________________________ 128
3.1
Инструкция if.....................................................................................................................................128
3.2
Инструкция if-else..............................................................................................................................136
3.3
Сравнение строковых значений.......................................................................................................140
3.4
Вложенные структуры принятия решения и инструкция if-elif-else............................................ 144
3.5
Логические операторы......................................................................................................................152
VIII
Краткое оглавление
3.6
Булевы переменные.......................................................................................................................... 159
3.7
Черепашья графика: определение состояния черепахи................................................................ 160
Вопросы для повторения............................................................................................................................ 168
У пражнения по программированию.......................................................................................................... 172
Г л ав а 4. С труктуры с повторением ................................................................................................179
4.1
Введение в структуры повторения................................................................................................. 179
4.2
Цикл while', цикл с условием повторения....................................................................................... 180
4.3
Цикл for: цикл со счетчиком повторений....................................................................................... 187
4.4
Вычисление нарастающего итога................................................................................................... 198
4.5
Сигнальные метки.............................................................................................................................202
4.6
Циклы валидации входных данных................................................................................................ 204
4.7
Вложенные циклы............................................................................................................................ 208
4.8
Черепашья графика: применение циклов для рисования узоров................................................. 215
Вопросы для повторения............................................................................................................................ 219
Упражнения по программированию.......................................................................................................... 222
Г л ав а 5. Ф у н к ц и и .................................................................................................................................. 226
5.1
Введение в функции..........................................................................................................................226
5.2
Определение и вызов функции без возврата значения................................................................. 229
5.3
Проектирование программы с использованием функций............................................................ 234
5.4
Локальные переменные................................................................................................................... 241
5.5
Передача аргументов в функцию.................................................................................................... 243
5.6
Глобальные переменные и глобальные константы....................................................................... 252
5.7
Введение в функции с возвратом значения: генерирование случайных чисел.......................... 256
5.8
Написание функций с возвратом значения.................................................................................... 267
5.9
Математический модуль math..........................................................................................................281
5.10 Хранение функций в модулях......................................................................................................... 284
5.11 Черепашья графика: модуляризация кода при помощи функций................................................ 290
Вопросы для повторения.............................................................................................................................296
Упражнения по программированию.......................................................................................................... 302
Г л ав а 6. Ф ай л ы и и скл ю ч ен и я.........................................................................................................308
6.1
Введение в файловый ввод и вывод............................................................................................... 308
6.2
Применение циклов для обработки файлов................................................................................... 325
6.3
Обработка записей........................................................................................................................... 332
6.4
Исключения.......................................................................................................................................345
Вопросы для повторения.............................................................................................................................358
Упражнения по программированию.......................................................................................................... 362
Г л ав а 7. С писки и к о р т е ж и ............................................................................................................... 365
7.1
Последовательности..........................................................................................................................365
7.2
Введение в списки.............................................................................................................................365
7.3
Нарезка списка...................................................................................................................................374
7.4
Поиск значений в списках при помощи инструкции in................................................................ 377
7.5
Методы обработки списков и полезные встроенные функции.................................................... 379
7.6
Копирование списков........................................................................................................................386
7.7
Обработка списков............................................................................................................................388
7.8
Включение в список..........................................................................................................................401
7.9
Двумерные списки........................................................................................................................... 404
7.10 Кортежи..............................................................................................................................................408
7.11 Построение графиков с данными списков при помощи пакета matplotlib.................................. 410
Вопросы для повторения............................................................................................................................ 427
Упражнения по программированию.......................................................................................................... 432
Краткое оглавление
IX
Г л а в а 8. Подробнее о строковы х д ан н ы х ...................................................................................... 436
8.1
Базовые строковые операции...........................................................................................................436
8.2
Нарезка строковых значений............................................................................................................443
8.3
Проверка, поиск и манипуляция строковыми данными............................................................... 448
Вопросы для повторения.............................................................................................................................464
Упражнения по программированию...........................................................................................................467
Г л ав а 9. С ловари и м н о ж ества......................................................................................................... 472
9.1
Словари..............................................................................................................................................472
9.2
Множества.........................................................................................................................................498
9.3
Сериализация объектов.....................................................................................................................512
Вопросы для повторения.............................................................................................................................518
Упражнения по программированию...........................................................................................................524
Г л ав а 10. К лассы и объектно-ориентированное програм м ирование................................. 528
10.1 Процедурное и объектно-ориентированное программирование................................................. 528
10.2 Классы................................................................................................................................................531
10.3 Работа с экземплярами......................................................................................................................548
10.4 Приемы конструирования классов..................................................................................................571
Вопросы для повторения.............................................................................................................................582
Упражнения по программированию...........................................................................................................585
Г л а в а 11. Н аследование....................................................................................................................... 590
11.1 Введение в наследование..................................................................................................................590
11.2 Полиморфизм....................................................................................................................................604
Вопросы для повторения.............................................................................................................................611
Упражнения по программированию...........................................................................................................613
Г л а в а 12. Р е к у р с и я ................................................................................................................................ 615
12.1 Введение в рекурсию........................................................................................................................615
12.2 Решение задач на основе рекурсии..................................................................................................618
12.3 Примеры алгоритмов на основе рекурсии......................................................................................621
Вопросы для повторения.............................................................................................................................629
Упражнения по программированию...........................................................................................................632
Г л а в а 13. П рограм м ирование граф ического п ользовательского интерфейса............... 633
13.1 Графические интерфейсы пользователя..........................................................................................633
13.2 Использование модуля tkinter..........................................................................................................63 5
13.3 Вывод текста с помощью виджетов Label......................................................................................639
13.4 Упорядочение виджетов с помощью рамок Frame....................................................................... 649
13.5 Виджеты Button и информационные диалоговые окна..................................................................651
13.6 Получение входных данных с помощью виджета Entry............................................................... 655
13.7 Применение виджетов Label в качестве полей вывода................................................................. 657
13.8 Радиокнопки и флаговые кнопки.....................................................................................................665
13.9 Виджеты Listbox................................................................................................................................671
13.10 Рисование фигур с помощью виджета Canvas................................................................................691
Вопросы для повторения.............................................................................................................................711
Упражнения по программированию...........................................................................................................715
Г л ав а 14. П рограм м ирование баз д а н н ы х .................................................................................... 718
14.1 Системы управления базами данных...............................................................................................718
14.2 Таблицы, строки и столбцы..............................................................................................................720
14.3 Открытие и закрытие соединения с базой данных с помощью SQLite....................................... 724
14.4 Создание и удаление таблиц............................................................................................................727
14.5 Добавление данных в таблицу.........................................................................................................731
14.6 Запрос данных с помощью инструкции SQL SELECT.................................................................. 739
X
Краткое оглавление
14.7 Обновление и удаление существующих строк.............................................................................. 754
14.8 Подробнее о первичных ключах..................................................................................................... 761
14.9 Обработка исключений базы данных............................................................................................. 765
14.10 Операции CRUD................................................................................................................................767
14.11 Реляционные данные........................................................................................................................ 775
Вопросы для повторения.............................................................................................................................791
Упражнения по программированию.......................................................................................................... 798
П рилож ение 1. У становка Python.................................................................................................... 803
Скачивание Python........................................................................................................................................803
Установка Python 3jc в Windows.................................................................................................................803
П рилож ение 2. Введение в среду ID L E ...........................................................................................805
Запуск среды IDLE и использование оболочки Python............................................................................ 805
Написание программы Python в редакторе IDLE..................................................................................... 807
Цветовая разметка........................................................................................................................................808
Автоматическое выделение отступом....................................................................................................... 808
Сохранение программы................................................................................................................................809
Выполнение программы..............................................................................................................................809
Другие ресурсы.............................................................................................................................................810
П рилож ение 3. Н абор сим волов A S C II..........................................................................................811
П рилож ение 4. П редопределенные им енованны е цвета..........................................................812
П рилож ение 5. Подробнее об инструкции import .......................................................................817
Импортирование конкретной функции или класса.................................................................................. 817
Импорт с подстановочным символом.........................................................................................................818
Использование псевдонимов.......................................................................................................................818
П рилож ение 6. Ф орм атирование числовы х результатов с помощ ью
ф ункции form at() .................................................................................................................................... 820
Форматирование в научной нотации..........................................................................................................821
Вставка запятых в качестве разделителей..................................................................................................822
Указание минимальной ширины поля....................................................................................................... 822
Процентный формат чисел с плавающей точкой..................................................................................... 824
Форматирование целых чисел.....................................................................................................................824
П рилож ение 7. У становка модулей при помощи менеджера пакетов p ip .........................825
П рилож ение 8. О тветы на вопросы в Контрольных точках .................................................826
Глава 1 ........................................................................................................................................................... 826
Глава 2 ...........................................................................................................................................................827
Глава 3 ...........................................................................................................................................................829
Глава 4 ...........................................................................................................................................................831
Глава 5 ...........................................................................................................................................................832
Глава 6 ........................................................................................................................................................... 834
Глава 7 ...........................................................................................................................................................836
Глава 8 ...........................................................................................................................................................838
Глава 9 ...........................................................................................................................................................839
Глава 10.........................................................................................................................................................840
Глава 11.........................................................................................................................................................841
Глава 12.........................................................................................................................................................842
Глава 13.........................................................................................................................................................842
Глава 14.........................................................................................................................................................844
П редм етны й у к азател ь........................................................................................................................ 847
Краткое оглавление......................................................................................................................... VII
П редисловие.................................................................................................................................................1
Прежде всего управляющие структуры и только потом классы..................................................................1
Изменения в пятом издании............................................................................................................................1
Краткий обзор глав...........................................................................................................................................2
Организация учебного материала...................................................................................................................6
Структурные элементы и условные обозначения книги...............................................................................6
Дополнительные материалы............................................................................................................................7
Онлайновые учебные ресурсы.............................................................................................................7
Ресурсы для преподавателя..................................................................................................................7
Электронный архив..........................................................................................................................................8
Об авторе........................................................................................................................................................... 8
Глава 1. Введение в компьютеры и программирование............................................................. 9
1.1 Введение.................................................................................................................................................9
1.2
Аппаратное и программное обеспечение..........................................................................................10
Аппаратное обеспечение....................................................................................................................10
Центральный процессор.....................................................................................................................11
Основная память..................................................................................................................................13
Вторичные устройства хранения.......................................................................................................13
Устройства ввода.................................................................................................................................14
Устройства вывода..............................................................................................................................14
Программное обеспечение.................................................................................................................14
Системное программное обеспечение.........................................................................................14
Прикладное программное обеспечение.......................................................................................15
1.3
Как компьютеры хранят данные........................................................................................................15
Хранение чисел....................................................................................................................................16
Хранение символов.............................................................................................................................18
Хранение чисел повышенной сложности..........................................................................................19
Другие типы данных...........................................................................................................................19
1.4
Как программа работает.....................................................................................................................20
От машинного языка к языку ассемблера.........................................................................................23
Высокоуровневые языки.....................................................................................................................23
Ключевые слова, операторы и синтаксис: краткий обзор.............................................................. 25
Компиляторы и интерпретаторы........................................................................................................26
1.5
Использование языка Python..............................................................................................................28
Установка языка Python......................................................................................................................28
Интерпретатор языка Python..............................................................................................................28
Интерактивный режим........................................................................................................................29
Написание программ Python и их выполнение в сценарном режиме............................................ 30
Среда программирования IDLE.........................................................................................................31
XII
Оглавление
Вопросы для повторения...............................................................................................................................32
Множественный выбор...................................................................................................................... 32
Истина или ложь..................................................................................................................................35
Короткий ответ....................................................................................................................................36
У пражнения.....................................................................................................................................................36
Г лава 2. Ввод, обработка и вы вод..................................................................................................... 38
2.1
Проектирование программы.............................................................................................................. 38
Цикл проектирования программы.................................................................................................... 38
Подробнее о процессе проектирования............................................................................................ 39
Понять задачу, которую программа должна выполнить........................................................... 39
Определить шаги, необходимые для выполнения задачи......................................................... 40
Псевдокод............................................................................................................................................41
Блок-схемы..........................................................................................................................................41
2.2
Ввод, обработка и вывод....................................................................................................................43
2.3
Вывод данных на экран при помощи функции print....................................................................... 43
Строковые данные и строковые литералы....................................................................................... 44
2.4
Комментарии.......................................................................................................................................46
2.5
Переменные.........................................................................................................................................47
Создание переменных инструкцией присваивания......................................................................... 48
Правила именования переменных.....................................................................................................51
Вывод нескольких значений при помощи функции print............................................................... 52
Повторное присваивание значений переменным............................................................................ 53
Числовые типы данных и числовые литералы................................................................................ 54
Хранение строковых данных с типом str......................................................................................... 55
Повторное присвоение переменной значения другого типа.......................................................... 55
2.6
Чтение входных данных с клавиатуры..............................................................................................57
Чтение чисел при помощи функции input........................................................................................ 58
2.7
Выполнение расчетов..........................................................................................................................61
*В центре внимания* Вычисление процентов.......................................................................... 63
Деление с плавающей точкой и целочисленное деление............................................................... 64
Приоритет операторов....................................................................................................................... 65
Группирование при помощи круглых скобок.................................................................................. 66
*В центре внимания* Вычисление среднего арифметического значения............................. 66
Оператор возведения в степень......................................................................................................... 68
Оператор остатка от деления..............................................................................................................68
Преобразование математических формул в программные инструкции........................................ 69
*В центре внимания* Преобразование математической формулы в программную
инструкцию....................................................................................................................................70
Смешанные выражения и преобразование типов данных.............................................................. 72
Разбиение длинных инструкций на несколько строк...................................................................... 73
2.8
Конкатенация строковых литералов................................................................................................. 74
Неявная конкатенация строковых литералов...................................................................................75
2.9
Подробнее об инструкции print.........................................................................................................76
Подавление концевого символа новой строки в функции print..................................................... 76
Задание символа-разделителя значений........................................................................................... 77
Экранированные символы..................................................................................................................77
2.10 Вывод на экран форматированного результата с помощью f-строк.............................................. 79
Выражения-местозаполнители.......................................................................................................... 80
Форматирование значений.................................................................................................................80
Округление чисел с плавающей точкой........................................................................................... 80
Вставка запятых в качестве разделителя.......................................................................................... 82
Форматирование числа с плавающей точкой в процентах............................................................. 82
Оглавление
XIII
Форматирование в научной нотации.................................................................................................83
Форматирование целых чисел............................................................................................................83
Указание минимальной ширины поля...............................................................................................84
Выравнивание значений.....................................................................................................................85
Порядок следования условных обозначений....................................................................................86
Конкатенация f-строк..........................................................................................................................87
2.11 Именованные константы....................................................................................................................88
2.12 Введение в черепашью графику.........................................................................................................90
Рисование отрезков прямой при помощи черепахи.........................................................................90
Поворот черепахи................................................................................................................................91
Установка углового направления черепахи в заданный угол........................................................ 95
Получение текущего углового направления черепахи....................................................................96
Поднятие и опускание пера................................................................................................................96
Рисование кругов и точек...................................................................................................................96
Изменение размера пера.....................................................................................................................98
Изменение цвета пера.........................................................................................................................99
Изменение цвета фона........................................................................................................................99
Возвращение экрана в исходное состояние......................................................................................99
Установление размера графического окна......................................................................................100
Перемещение черепахи в заданную позицию.................................................................................100
Получение текущей позиции черепахи...........................................................................................101
Управление скоростью анимации черепахи...................................................................................102
Сокрытие черепахи...........................................................................................................................102
Вывод текста в графическое окно....................................................................................................102
Заполнение геометрических фигур..................................................................................................104
Получение входных данных с помощью диалогового окна..........................................................106
Получение строковых входных данных с помощью команды turtle, textinput....................... 109
Использование turtle. doneO для оставления графического окна открытым............................... 109
*В центре внимания* Программа "Созвездие Ориона"......................................................... 109
Вопросы для повторения.............................................................................................................................118
Множественный выбор.....................................................................................................................118
Истина или ложь................................................................................................................................122
Короткий ответ.................................................................................................................................. 122
Алгоритмический тренажер.............................................................................................................122
Упражнения по программированию...........................................................................................................124
Г л а в а 3. С труктуры при н яти я реш ения и булева логика..................................................... 128
3.1
Инструкция//.....................................................................................................................................128
Булевы выражения и операторы сравнения....................................................................................130
Операторы >= и