Тази книга ще ви помогне да усвоите принципите на програмирането с Python. Първата част е посветена на синтаксиса и правилата за структуриране на кода в Python. Тук ще напишете първата си програма, ще разберете какви типове данни се поддържат и ще се научите да използвате различните оператори, променливи, цикли, математическите функции и други. Разгледана е работата с низове и низовите функции, регулярните изрази, работата със списъци.
Въпреки че първата част е озаглавена „Основи“, в нея на практика са засегнати всички теми, които биха ви били необходими, за да програмирате на Python, включително обработка на изключения, отваряне и затваряне на файлове, обектно ориентирано програмиране, работа с база данни MySQL и основи на SQL синтаксиса. Ще научите и как да обработвате интернет адреси и да правите разбор на HTML еквиваленти.
Втората част на книгата е посветена на библиотеката Tkinter и създаването на уиджети – изключително полезни инструменти, чрез които ще създадете графичния интерфейс за вашите приложения.
В последната, трета част, ще намерите много практически примери – за работа с текст, кодировки, работа с дата и време, работа с файлове и папки. Разгледани са и достатъчно сложни теми като работа с нишки, мрежово и уеб програмиране, кодиране и обработка на данни.
Последните две глави са посветени на създаването на игра за морски шах и известната 2D игра Змията, а в приложението са разгледани средствата за шифроване в Python.
Всички примери в книгата са щателно тествани, а кодът към тях е предоставен за безплатно сваляне.
Python практическо програмиране - 2 изд
Съдържание
Въведение…10
Накратко за Python…10
Крос-платформеност…11
Python е един от най-простите езици за програмиране…11
Популярността на Python…12
Колко струва това?…13
Философията на Python…13
Как е устроена тази книга?…15
Какво е новото във второто издание?…16
Част 1. Основи
Глава 1. Първа програма…17
1.1. За версиите на Python…17
1.2. Инсталиране на Python 3…18
1.3. Първа програма на Python…22
1.4. Подробно за IDLE…24
1.4.1. Подсказки при писане на кода…24
1.4.3. Промяна на цветовата тема…26
1.4.4. Горещи клавиши…28
1.5. Поставяне на програмата в отделен файл. Кодировка на текста…29
1.6. Структура на програмата…33
1.7. Коментари…37
1.8. Вход/изход на данни …38
1.9. Четене на параметрите от командния ред …41
1.10. Грешка при стартирането на IDLE…42
1.11. Програмиране на Python за Android…43
Глава 2. Променливи и типове данни…45
2.1. Имена на променливите…46
2.2. Типове данни…52
2.3. Присвояване на стойност…54
2.4. Проверка на типа данни и преобразуване на типове…58
2.5. Изтриване на променлива…61
Глава 3. Оператори …62
3.1. Математически оператори и работа с числа…62
3.1.1. Математически оператори…62
3.1.2. Пример: изчисляване на времето на пътуване…64
3.1.3. Пример: изчисляване на разхода на гориво…65
3.1.4. Избор на правилния тип данни…67
3.2. Оператори за работа с последователности…68
3.3. Оператори за присвояване…69
3.4. Побитови оператори…70
3.5. Приоритет на изпълнение на операторите…71
3.6. Прост калкулатор…72
Глава 4. Цикли и условни оператори…75
4.1. Условни оператори…75
4.1.1. Логически стойности…75
4.1.2. Оператори за сравнение…75
4.1.3. Оператор if..else…78
4.1.4. Блокове код и отстъпи…81
4.2. Цикли…82
4.2.1. Цикъл for…83
4.2.2. Цикъл while…85
4.2.3. Операторите break и continue…87
4.2.4. Функция range()…88
4.3. Безкрайни цикли…91
4.3.1. Безкраен цикъл по погрешка…91
4.3.2. Преднамерен безкраен цикъл…94
4.4. Истинни и неистинни стойности…96
4.5. Практически пример. Програмата “Нива на достъп”…96
Глава 5. Математически функции…100
5.1. Поддържани типове числа…100
5.2. Числови функции…103
5.3. Математически функции…104
5.4. Случайни числа. Модул random…105
5.5. Стойностите Infinity и NaN…108
5.6. Програмата “Познай числото”…109
5.6.1. Постановка на задачата…109
5.6.2. Работа с генератор на случайни числа…109
5.6.3. Кодът на програмата…110
5.6.4. Поправка на логическата грешка в програмата …111
Глава 6. Низове и низови функции…114
6.1. Какво е низ? Избор на кавички…114
6.2. Създаване на низ…117
6.3. Тройни кавички…119
6.4. Специални символи…120
6.5. Действия с низове…121
6.5.1. Обръщане към елемент по индекс…121
6.5.2. Сечение на низ…122
6.5.3. Конкатенация на низове…123
6.5.4. Проверка за наличие…123
6.5.5. Повторение…124
6.5.6. Функция len()…124
6.6. Форматиране на низове и методът format()…124
6.6.1. Оператор за форматиране %…124
6.6.2. Методи за подравняване на низ…128
6.6.3. Метод format()…129
6.7. Функции и методи за работа с низове…131
6.8. Настройки на локала…135
6.9. Търсене и замяна в низ…135
6.10. Какво има в низа?…137
6.11. Шифриране на низ…138
Глава 7. Регулярни изрази…139
7.1. Въведение в регулярните изрази…139
7.2. Функция compile() и основи на регулярните изрази …140
7.3. Методите match() и search()…146
7.4. Метод findall()…148
7.5. Метод sub()…149
7.6. Различни практически примери…150
7.6.1. Разделяне на низ с помощта на разделител…150
7.6.2. Използване на маска на обвивката…152
7.6.3. Съвпадение на текст в началото и края на низа…153
7.6.4. Търсене по шаблон…154
7.6.5. Търсене и замяна в текст…158
7.6.6. Изтриване на нежелани символи от низ…161
Глава 8. Списъци…163
8.1. Какво е списък?…163
8.2. Операции със списъци …165
8.3. Многомерни списъци…168
8.4. Обхождане на елементите на списък…168
8.5. Търсене на елемент от списък…169
8.6. Добавяне и премахване на елементи от списък…171
8.7. Разбъркване на елементи и избиране на случаен елемент…172
8.8. Сортиране на списък…173
8.9. Преобразуване на списък в низ…174
8.10. Изчисления с големи числови масиви …175
8.11. Програмата “Гараж”…178
Глава 9. Кортежи …187
9.1. Понятието кортеж…187
9.2. Създаване на кортежи…188
9.3. Методи на кортежите…189
9.4. Обхождане на елементите в кортежа…190
9.5. Кортеж като условие…191
9.6. Функцията len() и операторът in…191
9.7. Неизменяемост на кортежите и сливания…191
9.8. Модул itertools…192
9.9. Разопаковане на кортеж на отделни променливи…194
9.10. Списъци vs кортежи…200
Глава 10. Множества и речници…202
10.1. Понятието речник…202
10.2. Различни операции с речници…205
10.2.1. Достъп до елемент…205
10.2.2. Добавяне и премахване на елементи от речника…205
10.2.3. Обхождане на елементите на речник…206
10.2.4. Сортиране на речник…206
10.2.5. Методите keys(), values() и някои други…207
10.2.6. Програмата Dict…208
10.3. Понятието множество…213
10.4. Операции с множества…214
10.5. Методи на множествата…216
Глава 11. Потребителски функции…218
11.1. Деклариране на функция…218
11.2. Незадължителни параметри на функция…220
11.3. Променлив брой параметри…222
11.4. Анонимни функции…224
11.5. Функции генератори…228
11.6. Декоратори…229
11.7. Рекурсия…229
11.8. Глобални и локални променливи…230
11.8.1. Енкапсулация…231
11.8.2. Област на видимост. Ключовата дума global…232
11.8.3. Струва ли си да използваме глобални променливи?…235
11.9. Документиране на функции…235
11.10. Връщаме няколко стойности…236
11.11. Именувани аргументи…237
11.12. Практически пример: програма за четене на RSS ленти…238
Глава 12. Дата и време…241
12.1. Получаване на текущата дата и време…241
12.2. Форматиране на датата и времето…242
12.3. Модул calendar…245
12.4. Функция sleep…246
12.5. Измерване на времето за изпълнение на фрагменти от кода…247
Глава 13. Модули и пакети…250
13.1. Понятието модул…250
13.2. Инструкцията import…250
13.3. Инструкцията from…252
13.4. Път за търсене на модули…253
13.5. Повторно зареждане на модула…256
13.6. EGG файлове…257
Глава 14. Обработка на изключения …258
14.1. Какво е изключение?…258
14.2. Типове изключения…259
14.3. Инструкция try..except..else..finally…264
14.4. Инструкция with .. as…266
14.5. Генериране на изключения…268
Глава 15. Вход/изход на файл…270
15.1. Работа с файлове…270
15.1.1. Отваряне на файл…270
15.1.2. Методи за работа с файлове…273
15.1.3. Функции за работа с файлове…276
15.2. Работа с папки…279
15.3. Права за достъп в UNIX/Linux…281
Глава 16. ООП и Python…285
16.1. Основи на обектно ориентираното програмиране …285
16.2. Дефиниране на клас и създаване на обект…288
16.3. Конструктор и деконструктор…290
16.4. Наследяване…290
16.5. Специални методи…292
16.6. Статични методи…294
16.7. Абстрактни методи…295
16.8. Презареждане на оператори…296
16.9. Свойства на класа…297
16.10. Декоратори на клас…298
16.11. Практически пример: виртуална котка…299
16.11.1. Деклариране на обект…299
16.11.2. Деклариране на метод…300
16.11.3. Създаване на обект и извикване на метод…300
16.11.4. Конструктори…300
16.11.5. Атрибути на класа…302
16.11.6. Преброяваме котките…304
16.12. Управление на достъпа до атрибутите. Частни атрибути и методи…306
16.12.1. Понятието енкапсулация на обекти…306
16.12.2. Частни атрибути и методи…307
16.12.3. Кога трябва да използваме частни и кога публични методи?…309
16.12.4. Свойства. Управление на достъпа до частен атрибут…310
16.12.4. Виртуалната котка. Готово решение …312
Глава 17. Работа с база данни SQL…316
17.1. Основи на езика SQL…316
17.1.1. Основни понятия…316
17.1.2. Споразумение как да въвеждаме заявки…318
17.1.3. Типове полета…318
17.1.4. Създаване на таблици с оператора CREATE…320
17.1.5. Операторът INSERT: вмъкване на данни в таблица…321
17.1.6. Оператор UPDATE: промяна на запис…323
17.1.7. Оператор DELETE: изтриване на запис…324
17.1.8. Оператор SELECT: извличане на запис…325
17.1.9. Групиране на записи…328
17.1.10. Сортиране на записи…329
17.1.11. Изтриване на полета и таблици…330
17.2. Работа с MySQL…331
17.2.1. Свързване със СУБД…332
17.2.2. Изпълнение на заявки…335
Глава 18. Работа с интернет…339
18.1. Разбор на URL адрес…339
18.2. Декодиране на низа на заявка…341
18.3. Разбор на HTML еквиваленти…342
18.4. Преобразуване на относителни препратки…343
18.5. Определяне на кодировката…344
Част 2. Разработка на графичен интерфейс
Глава 19. Въведение в TKinter…346
19.1. Етапи при разработката на приложения с GUI…346
19.2. Импортиране на библиотеката tkinter…347
19.3. Създаване на главен прозорец…348
19.4. Създаване на уиджет…348
19.5. Задаване на свойства на уиджета…349
19.6. Определяне на събития и техните обработчици…351
19.7. Разполагане на уиджет в рамките на прозореца…352
19.8. Показване на главния прозорец. Програмата “Hello from button”…352
Глава 20. Уиджети…354
20.1. Бутони…354
20.2. Надписи (етикети)…355
20.3. Полета за въвеждане…355
20.4. Превключватели и полета за отметка…355
20.5. Списъци…356
20.6. Рамка. Програмата “Цветни рамки”…357
20.7. Дъщерни прозорци…358
20.8. Скала…359
20.9. Плъзгач…359
20.10. Меню. Програмите „Меню“ и „Цвят на прозореца“ …360
Глава 21. Събития и методът bind…364
21.1. Подробно за метода bind…364
21.2. Програма за преглеждане на файлове…364
21.3. Типове събития…367
21.3.1. Събития на мишката. Програмата „Реагираме на мишката“…368
21.3.2. Събития на клавиатурата. Програмата „Реагираме на клавиатурата“…368
21.4. Особености при работата с уиджета Text…370
Глава 22. Обработка на превключватели…373
22.1. Обработка на зависими превключватели (радиобутони)…373
22.2. Обработка на независими превключватели. Програма за избор на операционна система…376
Глава 23. Диалогови прозорци…378
23.1. Диалогови прозорци за отваряне и съхранение на файлове. Програма за преглеждане на файлове и редактор на файлове…378
23.2. MessageBox – извеждане на различни съобщения. По-нататъшна разработка на текстовия редактор…383
23.3. Проблемът с кодировката. Инсталиране на модула chardet…385
Глава 24. Графични примитиви…390
24.1. Геометрични примитиви. Програмата “Draw”…390
24.2. Обръщане към вече съществуващи графични примитиви…395
Част 3. Практически задачи
Глава 25. Работа с текст…399
25.1. Съвпадение на текст в началото и в края на низа…399
25.2. Разделяне на низове с използването на няколко разделителя…401
25.3. Търсене на съответствия с използването на wildcards…402
25.4. Търсене и замяна в текст…403
25.5. Работа с Unicode…404
25.6. Премахване на нежелани интервали от низа…406
25.7. Подравняване на низ…407
25.8. Форматиране на текст…408
25.9. Токенизация на текста…409
Глава 26. Примери за работа с дата и време…413
26.1. Конвертиране на дните в секунди и други основни операции, свързани с преобразуване на времето…413
26.2. Модулът dateutil…414
26.3. Часови зони…415
26.4. Диапазон от дати на текущия месец…415
26.5. Преобразуване на низ в дата…417
Глава 27. Практическа работа с файлове и папки…419
27.1. Четене и запис на компресирани файлове…419
27.2. Проверка за съществуване и получаване на допълнителна информация за файла…421
27.3. Работа с текстови файлове в различни кодировки…422
27.4. Пренасочване извода на функцията print() във файл…426
27.5. Записване във файл, който не съществува…426
27.6. Вход/изход с помощта на низове…426
27.7. Работа с много големи файлове…427
27.8. Манипулации с пътищата на файловете…429
27.9. Получаване на съдържанието на папка …430
27.10. Дескриптор като файлов обект…431
27.11. Временни файлове и папки…431
Глава 28. Работа с файлове в различни формати…434
28.1. Работа с CSV…434
28.2. Четене и запис на JSON данни…436
28.3. Разбор на XML файлове…437
28.4. Преобразуване на речник в XML…440
28.5. Модификация и презаписване на XML код…442
28.6. Декодиране и кодиране на шестнайсетично число…445
28.7. Base64 кодиране/декодиране …446
Глава 29. Паралелизъм…447
29.1. Общи положения…447
29.2. Стартиране и прекратяване на нишки…447
29.3. Демон нишки…450
29.4. Глобално блокиране на нишките…450
29.5. Обмен на данни между нишките. Опашки…451
Глава 30. Мрежово и уеб програмиране…457
30.1. Създаване на списък от IP адреси…457
30.2. Собствен HTTP клиент…459
30.3. Пишем TCP сървър…460
30.4. Обмен на данни между интерпретаторите на Python…462
Глава 31. „Морски шах“ за двама играчи…464
31.1. Списък с функции…464
31.2. Функцията draw_board()…464
31.3. Функцията take_input()…465
31.4. Функцията check_win()…466
31.5. Функцията main()…467
Глава 32. Пишем игра: „Змията“ на Python…472
32.1. За разработката на играта…472
32.2. Създаване на прозореца на приложението…472
32.3. Деклариране на спомагателни променливи…473
32.4. Създаване на игралното поле…473
32.5. Създаване на основните класове…474
32.6. Създаване на спомагателни функции…476
32.7. Пълният изходен код…480
32.8. Как можем да развием играта?…483
Приложение 1. Средства за шифроване в Python…485
1. Хеширане…485
2. PyCrypto…486
2.1. Инсталиране…486
2.2. Шифроване на низ…487
2.3. Шифроване на файлове с помощта на RSA…488
3. Пакетът cryptography…491
Заключение…493