本書以Python語言及其環(huán)境為工具,系統(tǒng)講解算法的概念、程序設(shè)計的基本思想以及常用的程序設(shè)計方法。主要內(nèi)容包括:程序設(shè)計基礎(chǔ)知識與Python程序設(shè)計的基本方法;數(shù)據(jù)類型的概念及Python程序中的操作方法;算法的概念及應用;類和對象的概念及應用;用戶界面設(shè)計的一般方法和技能;數(shù)據(jù)文件、數(shù)據(jù)庫操作的一般方法。 本書注重程序設(shè)計理念的先進性、程序設(shè)計方法的實用性以及學習過程中的思維連貫性,精心選取必要且實用的教學內(nèi)容,并根據(jù)教學或者自學過程中的實際需求進行編排和講解。
姚普選,理學碩士,高級工程師。1978年3月參加工作。1995年從西安交通大學理學院調(diào)入該校電信學院,從事計算機基礎(chǔ)課教學工作。1996年8月退休。主講過計算機程序設(shè)計(C++、Delphi、Visual BASIC、C#、Python等)、軟件開發(fā)技術(shù)基礎(chǔ)、大學計算機基礎(chǔ)、微機原理及接口技術(shù)、數(shù)據(jù)庫(dBASE、Access、SQL Server等)、數(shù)據(jù)結(jié)構(gòu)等多門計算機課程,其中前4門都是***精品課程。
目錄
第1章 程序及程序的運行\(zhòng)t1
1.1 程序及程序運行的一般方式\t1
1.1.1 程序的一般結(jié)構(gòu)\t1
1.1.2 程序設(shè)計語言的種類及特點\t4
1.1.3 程序運行的一般方式\t6
1.2 Python程序設(shè)計的一般過程\t9
1.2.1 使用Python解釋器執(zhí)行程序\t9
1.2.2 使用集成開發(fā)環(huán)境編寫Python程序\t12
1.2.3 Python程序的執(zhí)行方式\t14
程序解析1\t16
程序1-1 計算并聯(lián)電阻\t16
程序1-2 求解二元一次方程組\t17
程序1-3 三個整數(shù)排序\t19
實驗指導1\t20
實驗1-1 安裝并試用Python IDLE\t20
實驗1-2 編寫并運行Python程序\t24
第2章 數(shù)據(jù)的計算機表示與操作\t27
2.1 數(shù)值型數(shù)據(jù)和邏輯型數(shù)據(jù)\t27
2.1.1 標識符和名字\t27
2.1.2 數(shù)字與布爾值\t29
2.1.3 數(shù)值型變量與邏輯型變量\t30
2.1.4 內(nèi)存組織與變量引用\t31
2.1.5 常用內(nèi)置函數(shù)\t33
2.2 數(shù)據(jù)的運算及輸入/輸出\t35
2.2.1 運算符與表達式\t35
2.2.2 運算順序\t38
2.2.3 數(shù)據(jù)的輸入/輸出\t39
2.3 序列和字典\t41
2.3.1 字符串的種類及運算\t41
2.3.2 列表的特點及運算\t43
2.3.3 元組的特點及運算\t45
2.3.4 字典的特點及運算\t46
程序解析2\t49
程序2-1 判定一個5位或者4位整數(shù)是否為回文數(shù)\t49
程序2-2 判斷某日是當年第幾天\t52
程序2-3 計算購物金額\t53
實驗指導2\t55
實驗2-1 表達式求值\t55
實驗2-2 編寫并運行程序\t57
第3章 算法及程序的控制結(jié)構(gòu)\t60
3.1 算法與程序設(shè)計\t60
3.1.1 算法的概念\t60
3.1.2 算法的描述\t62
3.1.3 算法的基本特征\t63
3.1.4 結(jié)構(gòu)化程序設(shè)計思想\t64
3.1.5 算法中的數(shù)據(jù)處理和控制結(jié)構(gòu)\t66
3.1.6 算法求解與解析解\t69
3.2 程序中的分支語句和循環(huán)語句\t71
3.2.1 分支語句\t71
3.2.2 while語句\t72
3.2.3 for語句\t74
3.2.4 循環(huán)語句和選擇語句的嵌套\t76
3.2.5 循環(huán)控制語句\t77
3.3 遞推和迭代\t78
3.3.1 遞推法\t79
3.3.2 倒推法\t80
3.3.3 遞推法與代數(shù)解法\t82
3.3.4 迭代法\t83
程序解析3\t85
程序3-1 四則算術(shù)計算器\t85
程序3-2 查找指定范圍內(nèi)的完全數(shù)\t87
程序3-3 約瑟夫問題\t89
程序3-4 驗證哥德巴赫猜想\t91
程序3-5 求多項式的值\t93
實驗指導3\t95
實驗3-1 三種基本結(jié)構(gòu)\t95
實驗3-2 倒推法、遞推法與迭代法及其他算法\t98
第4章 函數(shù)與模塊\t101
4.1 函數(shù)及函數(shù)的參數(shù)\t101
4.1.1 函數(shù)的定義和調(diào)用\t101
4.1.2 參數(shù)的傳遞\t103
4.1.3 參數(shù)的種類\t105
4.2 函數(shù)的嵌套與遞歸調(diào)用\t106
4.2.1 函數(shù)的嵌套\t106
4.2.2 變量的作用域\t108
4.2.3 函數(shù)的遞歸調(diào)用\t110
4.2.4 遞歸函數(shù)\t112
4.2.5 尾遞歸\t113
4.3 函數(shù)式程序設(shè)計\t115
4.3.1 函數(shù)式程序中的函數(shù)\t115
4.3.2 匿名函數(shù)\t117
4.3.3 內(nèi)置高階函數(shù)\t119
4.3.4 控制結(jié)構(gòu)的函數(shù)式轉(zhuǎn)換\t120
4.3.5 閉包及裝飾器\t123
4.3.6 迭代器與生成器\t125
4.3.7 偏函數(shù)\t127
程序解析4\t128
程序4-1 鑒別一個日期是否有效\t128
程序4-2 查找指定范圍內(nèi)的循環(huán)素數(shù)\t130
程序4-3 利用蒙特卡羅法計算定積分\t131
程序4-4 對數(shù)組中各元素進行二路歸并排序\t134
程序4-5 通過埃拉托色尼篩法尋找指定范圍內(nèi)的素數(shù)\t135
程序4-6 使用裝飾器檢測函數(shù)的執(zhí)行時間和時長\t138
實驗指導4\t139
實驗4-1 函數(shù)的定義和調(diào)用\t139
實驗4-2 函數(shù)的嵌套與遞歸調(diào)用\t142
實驗4-3 函數(shù)式程序設(shè)計\t144
第5章 面向?qū)ο蟪绦蛟O(shè)計\t146
5.1 類及類的實例\t146
5.1.1 面向?qū)ο蟪绦蛟O(shè)計思想\t146
5.1.2 類的定義\t148
5.1.3 類的實例\t150
5.1.4 類的私有成員\t152
5.1.5 類方法和靜態(tài)方法\t153
5.2 類的繼承性和多態(tài)性\t155
5.2.1 面向?qū)ο蟪绦虻奶攸c\t155
5.2.2 類的繼承\(zhòng)t156
5.2.3 類的組合\t158
5.2.4 類的多重繼承\(zhòng)t159
5.2.5 函數(shù)和運算符重載\t161
5.2.6 類的多態(tài)性\t164
5.3 模塊與包\t167
5.3.1 模塊\t167
5.3.2 命名空間\t170
5.3.3 包\t171
程序解析5\t173
程序5-1 員工評優(yōu)的命令式程序、函數(shù)式程序和面向?qū)ο蟪绦騖t173
程序5-2 組合實現(xiàn)點類、圓類和矩形類\t176
程序5-3 繼承與組合實現(xiàn)通訊錄類\t178
程序5-4 包含類方法和靜態(tài)方法的日期類\t180
實驗指導5\t183
實驗5-1 類的定義及實例的操作\t183
實驗5-2 類的繼承性\t185
第6章 異常處理及程序調(diào)試\t189
6.1 異常處理\t189
6.1.1 處理異常情況的傳統(tǒng)方式\t189
6.1.2 Python的異常處理機制\t191
6.1.3 異常對象及自定義異常\t192
6.2 程序的測試和調(diào)試\t194
6.2.1 程序測試方式及白盒測試用例設(shè)計\t194
6.2.2 黑盒測試及測試用例設(shè)計\t196
6.2.3 命令行參數(shù)\t198
6.2.4 使用斷言調(diào)試程序\t201
6.2.5 使用日志調(diào)試程序\t202
6.2.6 使用pdb包調(diào)試程序\t203
程序解析6\t205
程序6-1 try…except結(jié)構(gòu)實現(xiàn)的文本文件查找操作\t205
程序6-2 自定義異常――求解三角形面積\t207
程序6-3 用于邏輯覆蓋測試的程序\t209
程序6-4 使用命令行參數(shù)和日志求解斐波那契序列\(zhòng)t210
實驗指導6\t213
實驗6-1 異常的捕捉與處理\t213
實驗6-2 程序的測試和調(diào)試\t215
第7章 圖形用戶界面程序\t217
7.1 創(chuàng)建GUI程序\t217
7.1.1 創(chuàng)建GUI窗體\t217
7.1.2 控件及其屬性\t219
7.1.3 控件的布局\t222
7.1.4 事件處理\t223
7.2 菜單與對話框\t226
7.2.1 菜單欄與彈出菜單\t227
7.2.2 標準消息框\t229
7.2.3 標準輸入對話框\t231
7.2.4 標準文件對話框\t232
7.2.5 標準顏色對話框\t234
7.3 繪圖程序\t235
7.3.1 Canvas組件\t236
7.3.2 Canvas組件的功能\t237
7.3.3 Turtle庫的畫圖命令\t239
7.3.4 Turtle庫的控制命令\t240
程序解析7\t242
程序7-1 獎金計算器\t243
程序7-2 四則運算器\t245
程序7-3 貨款計算器\t247
程序7-4 畫幾何圖形程序\t249
程序7-5 調(diào)用Tkinter庫的Canvas組件畫函數(shù)圖像\t251
程序7-6 導入Turtle庫畫函數(shù)圖像\t253
實驗指導7\t254
實驗7-1 創(chuàng)建GUI程序\t255
實驗7-2 創(chuàng)建使用菜單和對話框的程序\t257
實驗7-3 創(chuàng)建繪圖程序\t259
第8章 數(shù)據(jù)查找與存取\t261
8.1 文字的計算機表示\t261
8.1.1 ASCII碼\t261
8.1.2 GB 2312―80漢字編碼標準\t263
8.1.3 GB 18030漢字編碼標準\t265
8.1.4 Unicode標準\t268
8.1.5 Unicode字符的存儲格式\t270
8.2 正則表達式\t272
8.2.1 正則表達式概念\t272
8.2.2 正則表達式模式\t273
8.2.3 正則表達式中的元字符\t275
8.2.4 正則表達式對象\t277
8.2.5 正則表達式的匹配\t279
8.2.6 正則表達式的切分、分組與替換\t281
8.3 數(shù)據(jù)文件的存取\t282
8.3.1 數(shù)據(jù)文件的概念\t282
8.3.2 文件的打開和關(guān)閉\t284
8.3.3 文件的打開模式\t285
8.3.4 文件對象的屬性\t287
8.3.5 文件的讀取和寫入\t288
8.4 簡單爬蟲\t289
8.4.1 HTTP協(xié)議與URL網(wǎng)址\t289
8.4.2 HTTP請求與響應\t290
8.4.3 爬取靜態(tài)網(wǎng)頁\t292
8.4.4 Request對象\t293
8.4.5 爬蟲基本流程\t295
程序解析8\t297
程序8-1 正則表達式的使用\t298
程序8-2 爬取一個網(wǎng)頁上的所有批圖片\t299
程序8-3 爬取同一個URL的多個分頁\t301
實驗指導8\t303
實驗8-1 正則表達式中元字符的使用\t303
實驗8-2 正則表達式的綜合應用\t305
實驗8-3 簡單爬蟲及數(shù)據(jù)文件讀/寫\t306
第9章 數(shù)據(jù)庫連接與操縱\t308
9.1 數(shù)據(jù)庫系統(tǒng)組成\t308
9.1.1 數(shù)據(jù)庫的概念\t308
9.1.2 數(shù)據(jù)庫系統(tǒng)的功能\t310
9.1.3 數(shù)據(jù)庫系統(tǒng)組成\t311
9.2 數(shù)據(jù)庫管理系統(tǒng)\t313
9.2.1 關(guān)系數(shù)據(jù)庫\t313
9.2.2 數(shù)據(jù)庫管理系統(tǒng)的功能\t315
9.2.3 常見數(shù)據(jù)庫管理系統(tǒng)\t316
9.3 SQL及其數(shù)據(jù)庫操作\t318
9.3.1 SQL的功能與特點\t318
9.3.2 SQL語句\t320
9.3.3 創(chuàng)建SQLite數(shù)據(jù)庫\t323
9.3.4 SQLite數(shù)據(jù)庫的數(shù)據(jù)查詢與更新\t325
9.3.5 Python程序操作SQLite數(shù)據(jù)庫\t327
程序解析9\t329
程序9-1 創(chuàng)建SQLite數(shù)據(jù)庫\t329
程序9-2 SQLite庫的數(shù)據(jù)錄入\t331
程序9-3 SQLite庫的數(shù)據(jù)查詢\t332
實驗指導9\t334
實驗9-1 創(chuàng)建產(chǎn)品數(shù)據(jù)庫\t334
實驗9-2 產(chǎn)品數(shù)據(jù)庫的數(shù)據(jù)錄入、查詢與修改\t335
參考文獻\t337