Python程序設計語言的開源、跨平臺、易于入門等特點使其廣受使用者歡迎。近二十多年來,Python語言在TIOBE程序設計語言排行榜中的位次不斷上升。在最近兩年的每月排名中更是長期占據(jù)榜首。Python是通用的程序設計語言,廣泛應用于互聯(lián)網(wǎng)、桌面系統(tǒng)和嵌入式系統(tǒng)等開發(fā)領(lǐng)域。
在大數(shù)據(jù)和人工智能時代,數(shù)據(jù)處理、分析、機器學習和深度學習得到各個領(lǐng)域的廣泛關(guān)注和重視。程序設計是實現(xiàn)數(shù)據(jù)處理、分析、機器學習和深度學習的基礎(chǔ)。Python程序設計語言已廣泛應用于這些領(lǐng)域。因此,學習Python程序設計可以為上述領(lǐng)域的學習和研究提供基礎(chǔ)的技術(shù)支撐。
本書面向Python程序設計的入門讀者,盡量兼顧簡單性和體系性,順序漸進地進行講解,逐步引導讀者注重利用幫助文檔來提高自學能力和解決問題的能力。第1~7章介紹Python的基本用法和基礎(chǔ)語法,第8、9章介紹文件與數(shù)據(jù)的處理,第10~12章分別介紹Python程序設計在各領(lǐng)域的應用。
第1章介紹Python開發(fā)環(huán)境的安裝、各種常用集成開發(fā)環(huán)境的特點、Python編程的方式與風格、幫助的使用。第2~8章中貫穿了一個身體質(zhì)量指數(shù)(BMI)計算的案例,根據(jù)各章的知識點,不斷豐富該案例。第2章介紹Python語言的標識符、變量、賦值語句、標準輸入和輸出、常用數(shù)據(jù)類型等,該章根據(jù)體質(zhì)指數(shù)案例計算的順序(也是初學者初次接觸程序碰到的大致流程)來組織知識點的順序,逐步豐富、擴展相關(guān)知識點,并盡量保持知識點的完整性和體系性。第3章主要介紹分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),其中標星號(*)的部分對初學者來說可能有一定的難度,讀者可以先跳過該內(nèi)容。第4章主要介紹列表、元組、等差整數(shù)序列、字典、集合等組合類型對象的創(chuàng)建和常見用法,并介紹了可迭代對象、迭代器和推導式的用法,最后介紹collections模塊中的Counter容器以方便元素個數(shù)的統(tǒng)計。第5章主要介紹字符串的構(gòu)造、字符集與字符編碼、字符串格式化方法和字符串操作的常用方法。第6章主要介紹函數(shù)的定義方法、函數(shù)參數(shù)的傳遞方式、lambda函數(shù)、模塊的__name__屬性及其用處。第7章介紹類的定義方法、對象的一般創(chuàng)建方法、類的繼承特性。第8章主要介紹數(shù)據(jù)在文本文件和Excel文件中的存取方法。第9章主要介紹利用NumPy、Matplotlib和Pandas進行數(shù)據(jù)分析和可視化展示的基本方法。第10章以案例的形式分別介紹經(jīng)濟與管理中的數(shù)據(jù)分析和可視化。第11章以案例的形式介紹文學與法學中文本的分析和可視化。第12章以案例的形式介紹數(shù)字媒體中音頻與圖像的處理。上海對外經(jīng)貿(mào)大學的柳青參與了第2、4、5和6章的部分內(nèi)容編寫,鄭戟明參與了第2和4章的部分內(nèi)容編寫。
本書提供配套的程序源碼,并為教師提供教學課件、教學大綱和部分習題參考答案。這些資料可以從清華大學出版社官方網(wǎng)站下載。
使用本書時,如果讀者使用Python官方發(fā)行的標準版本,則還需要安裝以下第三方庫: openpyxl、xlwings、numpy、matplotlib、pandas、scikitlearn、gensim、pillow、jieba、wordcloud、pygame、pydub。如果使用Anaconda,則還需要安裝以下第三方庫: jieba、wordcloud、pygame、pydub。本書相應章節(jié)中均有這些庫的安裝方法介紹。
由于作者水平有限,書中難免存在疏漏和不足之處,敬請批評指正,并將意見反饋給我們。
作者
2025年3月
第1章Python概述與開發(fā)環(huán)境
1.1Python語言的特點
1.2Python的下載與安裝
1.2.1標準版Python的下載與安裝
1.2.2增強版Python的下載與安裝
1.3開始使用Python
1.3.1交互方式
1.3.2代碼文件方式
1.3.3代碼文件的打開
1.3.4代碼風格
1.4Python的集成開發(fā)環(huán)境
1.4.1Spyder
1.4.2VS Code
1.4.3Wing Python IDE
1.5模塊導入與使用幫助
1.5.1模塊、包、庫與模塊的導入方式
1.5.2常用標準模塊
1.5.3使用幫助
1.5.4模塊導入與使用幫助的應用實例
習題
第2章Python語言基礎(chǔ)
2.1用字符串表達自然語言
2.1.1一對英文引號作為字符串的邊界符
2.1.2字符串的拼接
2.2標識符、變量與賦值語句
2.2.1標識符
2.2.2變量與賦值語句
2.3使用input()函數(shù)從鍵盤接收輸入
2.4數(shù)據(jù)類型
2.4.1數(shù)值類型
2.4.2布爾類型
2.4.3序列類型
2.4.4映射類型
2.4.5集合類型
2.5根據(jù)數(shù)值字符串創(chuàng)建數(shù)值對象
2.6運算符與表達式
2.6.1基本運算符與表達式
2.6.2復合賦值運算符與表達式
2.7使用print()函數(shù)實現(xiàn)輸出
2.8執(zhí)行字符串中的表達式計算
2.8.1用eval()函數(shù)計算字符串中單個表達式的值
2.8.2用exec()函數(shù)執(zhí)行字符串中多個表達式
2.9常用內(nèi)置函數(shù)與常用模塊
2.9.1常用內(nèi)置函數(shù)
2.9.2常用標準模塊random
2.10續(xù)行符
2.11Python語言基礎(chǔ)的應用實例
習題
第3章流程控制
3.1條件表達式
3.2if語句分支結(jié)構(gòu)
3.2.1if語句的單分支結(jié)構(gòu)
3.2.2if語句的雙分支結(jié)構(gòu)
3.2.3if語句的多分支結(jié)構(gòu)
3.2.4分支結(jié)構(gòu)的嵌套
3.3分支結(jié)構(gòu)的三元運算
*3.4matchcase分支結(jié)構(gòu)
3.4.1匹配簡單對象
3.4.2匹配序列對象
3.4.3匹配字典對象
3.5循環(huán)結(jié)構(gòu)
3.5.1簡單while循環(huán)結(jié)構(gòu)
3.5.2簡單for循環(huán)結(jié)構(gòu)
3.5.3用于終止循環(huán)的break語句
3.5.4用于提前進入下一輪循環(huán)的continue語句
3.5.5嵌套循環(huán)
3.5.6嵌套循環(huán)中的break和continue語句
習題
第4章常用組合數(shù)據(jù)類型
4.1常用序列類型及其對象的創(chuàng)建
4.1.1列表及其對象的創(chuàng)建
4.1.2元組及其對象的創(chuàng)建
4.1.3列表與元組之間的相互生成
4.1.4等差整數(shù)序列及其對象的創(chuàng)建
4.2序列對象的通用操作
4.2.1序列元素的訪問
4.2.2序列的切片
4.2.3序列中的加法與乘法運算
4.2.4序列中特定元素出現(xiàn)次數(shù)的統(tǒng)計
4.2.5序列中查找元素的位置索引
4.2.6適用于序列的常用函數(shù)
4.2.7實現(xiàn)序列位置翻轉(zhuǎn)的reversed類
4.2.8序列元素的遍歷
4.2.9隨機排列與隨機采樣
4.3列表的常用操作
4.3.1列表元素的修改
4.3.2列表元素的插入與擴展
4.3.3列表元素的刪除
4.3.4列表元素位置的翻轉(zhuǎn)與元素的排序
4.4序列的應用實例
4.5字典
4.5.1字典的創(chuàng)建
4.5.2修改與擴充字典元素
4.5.3字典元素相關(guān)計算
4.5.4根據(jù)字典的鍵查找對應的值
4.5.5刪除字典中的元素
4.5.6獲取字典元素對象
4.5.7遍歷字典
4.5.8字典的應用實例
4.6由字典生成列表與元組
4.7集合
4.7.1集合的創(chuàng)建
4.7.2集合的運算
4.8可迭代對象與迭代器對象
4.8.1可迭代對象
4.8.2迭代器對象
4.8.3創(chuàng)建常用的迭代器對象
4.9推導式
4.9.1列表推導式
4.9.2字典推導式
4.9.3集合推導式
4.10序列解包
4.11collections模塊中的Counter容器
習題
第5章字符串與字符編碼
5.1字符串構(gòu)造
5.2字符集與字符編碼
5.2.1字符集與編碼方法
5.2.2字符與編碼的轉(zhuǎn)換
5.3字符串格式化
5.3.1用%格式化字符串
5.3.2用format()方法格式化字符串
5.3.3用format_map()方法格式化字符串
5.3.4用fstrings字面量方法格式化字符串
5.4字符串常用方法
5.4.1英文字母大小寫轉(zhuǎn)換
5.4.2判斷字符串中的字符元素特點
5.4.3子串的查找與統(tǒng)計
5.4.4分割字符串
5.4.5用join()連接可迭代對象中的元素
5.4.6子串與字符替換
5.4.7去除首尾子串
5.4.8判斷是否以特定子串開始或結(jié)束
習題
第6章函數(shù)的設計與模塊的__name__屬性
6.1為什么需要函數(shù)
6.2函數(shù)的定義
6.3位置參數(shù)與關(guān)鍵參數(shù)
6.4默認參數(shù)
6.5個數(shù)可變的參數(shù)
6.5.1一個形參接收多個實參構(gòu)成組合對象
6.5.2一個組合對象的實參給多個形參分配參數(shù)
6.5.3形參和實參均為組合對象
6.6變量作用域
6.7匿名函數(shù)lambda
6.8函數(shù)的遞歸調(diào)用
6.9模塊的__name__屬性
習題
第7章自定義類與對象
7.1對象類型與對象方法調(diào)用
7.2類的定義與對象的創(chuàng)建
7.3類的繼承
7.3.1父類與子類
7.3.2繼承的語法
7.3.3子類繼承父類的屬性
7.3.4子類繼承父類的方法
習題
第8章文件的讀寫
8.1文件的打開與關(guān)閉
8.2文本文件的讀寫
8.2.1以字符方式將文本寫入文件
8.2.2以字節(jié)方式將文本寫入文件
8.2.3以字符方式讀取文本文件
8.2.4以字節(jié)方式讀取文本文件
8.2.5采用指定編碼存取文本文件
8.3文件指針
8.4用csv模塊讀寫CSV文件
8.5用xlwings處理Excel文件
8.5.1創(chuàng)建Excel文件
8.5.2讀取并修改Excel文件
8.5.3在Excel中調(diào)用Python程序
習題
第9章數(shù)據(jù)分析與可視化基礎(chǔ)
9.1NumPy數(shù)據(jù)處理基礎(chǔ)
9.1.1多維數(shù)組
9.1.2獲取數(shù)組對象屬性
9.1.3轉(zhuǎn)換數(shù)組的數(shù)據(jù)類型
9.1.4隨機數(shù)與隨機數(shù)組的生成
9.1.5數(shù)組在文件中的存取
9.1.6數(shù)組的常用運算與函數(shù)
9.1.7數(shù)組元素的統(tǒng)計分析與排序
9.2Matplotlib數(shù)據(jù)可視化基礎(chǔ)
9.2.1繪制基本圖形
9.2.2繪制多軸圖
9.2.3顏色的設置
9.2.4坐標軸主次刻度的設置
9.3Pandas數(shù)據(jù)分析基礎(chǔ)
9.3.1數(shù)據(jù)結(jié)構(gòu)與基本操作
9.3.2在文件中存取Pandas數(shù)據(jù)對象
9.3.3數(shù)據(jù)預處理
9.3.4統(tǒng)計分析
9.3.5Pandas中的繪圖方法
習題
第10章經(jīng)濟與管理中的數(shù)據(jù)分析和可視化
10.1Jupyter Notebook簡介
10.2銷售數(shù)據(jù)分析與可視化
10.3人事管理數(shù)據(jù)分析與可視化
習題
第11章文學與法學中文本的分析和可視化
11.1文本的分詞與停用詞的去除
11.2制作詞云
11.3詞性標注
11.4提取關(guān)鍵詞
11.4.1基于TFIDF算法的關(guān)鍵詞抽取
11.4.2基于TextRank算法的關(guān)鍵詞抽取
11.5文本的向量化
11.5.1基于詞袋模型的向量編碼
11.5.2基于序列模型的向量編碼
11.6基于文本相似性的類案檢索
習題
第12章數(shù)字媒體處理
12.1音頻處理
12.1.1利用wave進行音頻處理
12.1.2利用pygame播放音樂
12.1.3利用pydub進行音頻處理
12.2利用Pillow庫進行圖像處理
12.2.1Image模塊
12.2.2ImageDraw與ImageFont模塊
12.2.3ImageFilter模塊
12.2.4綜合實例: 利用Pillow制作驗證碼圖像
習題
參考文獻