КулЛиб - Классная библиотека! Скачать книги бесплатно 

Начинаем программировать на Python [Тони Гэддис] (pdf) читать онлайн

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]
НАЧИНАЕМ ПРОГРАММИРОВАТЬ
Н А > > > П1 , Т |


PYTHON

STARTING OUT WITH

Py t h o n *
FIFTH E D I T I O N

STARTING OUT WITH

Pyth o n *
FIFTH E D I T I O N

Tony Gaddis
Haywood C o m m un ity College

Pearson

Тони Гэддис. Начинаем программировать на Python

ТОНИ ГЭДДИС

НАЧИНАЕМ ПРОГРАММИРОВАТЬ

"PYTHON
5-Е ИЗДАНИЕ

Санкт-Петербург
«БХВ-Петербург»
2022

УДК 004.438 Python
ББК 32.973.26-018.1

Г98

Г эддис Т.
Начинаем программировать на Python. — 5-е изд.: Пер. с англ. — СПб.: БХВ-Петербург,
2022. — 880 с.: ил.
ISBN 978-5-9775-6803-6
Изложены принципы программирования, с помощью которых читатель приобретет навыки алго­
ритмического решения задач на языке Python, даже не имея опыта программирования. Дано краткое
введение в компьютеры и программирование. Рассмотрен ввод, обработка и вывод данных, управляю­
щие структуры и булева логика, структуры с повторением, функции, файлы и исключения, списки и
кортежи, строковые данные, словари и множества, классы и ООП, наследование, рекурсия, программи­
рование интерфейса, функциональное программирование и др.
Для облегчения понимания сути алгоритмов широко использованы блок-схемы, псевдокод и другие
инструменты. Приведено большое количество сжатых и практичных примеров программ. В каждой
главе предложены тематические задачи с пошаговым анализом их решения.
В пятом издании добавлена глава о программировании баз данных.
Для начинающих программистов,
старших школьников и студентов первых курсов

УДК 004.438 Python
ББК 32.973.26-018.1

Группа подготовки издания:
Руководитель проекта
Зав. редакцией
Компьютерная верстка
Оформление обложки

Евгений Рыбаков
Людмила Гауль
Ольги Сергиенко
Зои Канторович

Authorized translation from the English language edition, entitled Starting Out wth Python. 5th Edition, by Tony Gaddis, published by Pearson
Education, INC, publishing as Prentice Hall. Copyright © 2021 by Pearson Education, Inc.
All rights reserved. No part o f this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including
photocopying, recording or by any information storage retrieval system, without permission from Pearson Education. Inc Russian language edition
published by LLC “BHV”. Copyright © 2022.
Авторизованный перевод англоязычного издания под названием Starting Out with Python, 5th Edition, by Tony Gaddis, опубликованного
Pearson Education, Inc. и подготовленного к изданию Prentice Hall. ©2021 Pearson Education, Inc.
Все права защищены. Никакая часть настоящей книги не может быть воспроизведена нли передана в какой бы то нн было форме
и какими бы то нн было средствами, будь то электронные или механические, включая фотокопирование н запись на магнитный носитель,
если на то нет разрешения Pearson Education, Inc Перевод на русский язык «БХВ», © 2022.

Подписано в печать 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 (рус.)

© Pearson Education, Inc., 2021
© П еревод на русский язык, оф орм ление
О О О "БХ В-Петербург", О О О "БХВ”, 2022

Краткое оглавление

О гл а в л е н и е .................................................................................................................................................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
Операторы >= и