《Python程序設計基礎》
教 學 大 綱
目 錄
一、 課程簡介
二、 教學目的和要求
三、 教學中應注意的問題
四、 教學內容
五、 教學課時分配
六、 教材與參考書目
一、 課程簡介
課程名稱:Python程序設計基礎
課程編號:**********
課程性質:必修
適用專業:非計算機專業
前導課程:無
考核方式:考試
建議學時:48+16(可根據實際需要進行調整)
建議學期:2、4、5
二、 教學目的和要求
通過本課程的學習,使得學生能夠理解Python的編程模式(命令式編程、函數式編程),熟練運用Python運算符、內置函數以及列表、元組、字典、集合等基本數據類型和相關列表推導式、切片等特性來解決實際問題,熟練掌握Python分支結構、循環結構、函數設計以及類的設計與使用,熟練使用字符串方法,適當了解正則表達式,熟練使用Python讀寫文本文件,適當了解二進位文件操作,了解Python程序的調試方法,了解Python面向對象程序設計模式,掌握使用Python操作SQLite資料庫的方法,掌握Python+pandas進行數據處理的基本用法,掌握使用Python+matplotlib進行數據可視化的用法,同時還應培養學生的代碼優化與安全編程意識。
在教學和學習過程中,應充分發揮Python語言的優勢,從最簡單、最直觀的思路出發,儘快解決問題。不建議在內存地址或類似的底層細節上花費太多時間。
三、 教學中應注意的問題
Python編程模式中非常重要的一條是代碼簡單化、問題簡單化,同時應保證代碼具有較強的可讀性。在教學過程中,儘量避免在Python程序中帶有其他程式語言的痕跡,要儘量從最簡單的角度去思考和解決問題、實現自己的想法和思路,儘量多使用Python內置函數、標準庫對象和合適的擴展庫對象,保證代碼的優雅、簡潔,讓代碼更加Pythonic。
使用Python編程解決問題應充分借鑑和使用成熟的標準庫和擴展庫,儘量避免自主編寫完整的業務邏輯,部分具體操作完全可以使用擴展庫來實現,大幅度提高開發效率。例如:如果需要進行排序則直接使用內置函數sorted()或列表的sort()方法進行排序,切不可再使用選擇法排序、插入法排序、冒泡法排序、快速排序或堆排序等排序算法來編寫代碼實現;計算最大公約數應習慣於使用math標準庫的gcd()函數,而不應該自己編寫代碼實現輾轉相除法的計算;對數據進行隨機亂序應使用random標準庫中的shuffle()函數;從給定數據集中隨機選擇元素應使用random標準庫中的choice()函數;等等。
四、 教學內容
第1章 Python概述
1.1 Python是這樣一種語言
教學重點:Python的命令式編程和函數式編程。
1.2 Python版本之爭
教學重點:系統環境變量的設置。
1.3 Python編程規範與代碼優化建議
教學重點:縮進,空格與空行,不同數據類型的選擇對程序運行效率的影響。
1.4 Anaconda3開發環境的安裝與使用
1.5 安裝擴展庫的幾種方法
教學重點:熟練使用pip安裝和管理Python擴展庫。
1.6 標準庫與擴展庫中對象的導入與使用
教學重點:三種導入方法之間的區別。
1.7 __name__屬性的作用
教學重點:不同方式使用Python程序時__name__屬性的值。
第2章 運算符、表達式與內置對象
2.1 Python常用內置對象
教學重點:不需要事先聲明變量名及其類型,變量命名規範,數字、字符串、列表、元組、字典、集合的簡單使用,數字大小無限制。
2.2 Python運算符與表達式
教學重點:同一個運算有不同含義,關係運算符和邏輯運算符的惰性求值特點。
2.3 Python關鍵字簡要說明
2.4 Python常用內置函數用法精要
教學重點:很多函數有基本用法和高級用法,注意這些函數的可選參數;理解函數式編程的模式。
教學難點:函數式編程。
2.5 精彩案例賞析
第3章 詳解Python序列結構
3.1 列表
教學重點:列表對象的創建與刪除,其他類型到列表的轉換,內置range(),使用+運算符、append()方法、extend()方法、insert()方法為列表增加元素,使用del命令、pop()方法、remove()方法刪除列表元素,使用下標訪問列表元素,使用index()方法獲取列表元素下標,使用count()方法獲取列表元素出現次數,有序序列的雙向索引,使用成員資格判斷運算符in判斷列表中是否存在指定元素,使用切片訪問、修改、刪除、增加列表元素,列表排序方法sort()與內置排序函數sorted()以及列表逆序方法reverse()與內置逆序函數reversed(),len()、max()、min()、sum()、zip()、enumerate()等內置函數對列表對象的操作,使用列表推導式快速生成列表。
教學難點:自動內存管理,切片操作,列表推導式,排序方法的key參數。
3.2 元組
教學重點:元組對象的創建與刪除,其他類型到元組的轉換,元組與列表的區別,生成器推導式。
教學難點:元組與列表的區別,元組的不可變特點,生成器表達式與列表推導式的效率比較。
3.3 字典
教學重點:字典對象的創建與刪除,字典元素、鍵、值的訪問方法,字典元素的添加與修改,使用字典對象的get()方法獲取指定鍵對應的值,有序字典對象的使用,使用字典來計數,有序字典。
教學難點:字典對象的get()方法,訪問字典對象時可以使用鍵作為下標,字典對象的鍵必須為不可變對象。
3.4 集合
教學重點:集合對象的創建與刪除,其他類型數據到集合的轉換,使用add()方法為集合增加元素,使用pop()和remove()方法刪除元素,使用clear()方法清空集合,集合的並、交、差以及對稱差等運算,使用集合來提取序列中的唯一元素。
教學難點:Python運算符的多重含義,集合運算。
3.5 序列解包的多種形式和用法
教學重點:序列解包的本質——對多個變量同時賦值;序列解包的要求——等號右側值的數量與等號左側變量的數量一致。
教學難點:多個變量同時賦值。
第4章 程序控制結構
4.1 條件表達式
教學重點:Python關係運算符可以連用,枚舉序列元素時多使用成員測試運算符in,算數運算符/和//的區別,任何合法的Python表達式都可以作為條件表達式,False、0(或0.0、0j等)、空值None、空列表、空元組、空集合、空字典、空字符串、空迭代對象作為條件表達式與False等價。
教學難點:關係運算符可以連用,Python中的False等價值,幾乎所有Python表達式都可以作為條件表達式來使用。
4.2 選擇結構
教學重點:單分支選擇結構、雙分支選擇結構、多分支選擇結構、選擇結構的嵌套,條件表達式後必須有冒號且換行縮進後開始寫代碼塊,elif關鍵字表達else if的意思。
教學難點:縮進體現代碼的業務邏輯。
4.3 循環結構
教學重點:for循環、while循環,range對象在循環中的使用,成員測試符in與序列解包在循環語句中的使用,帶有else子句的循環結構,循環代碼的優化,break與continue語句的作用。
教學難點:帶有else子句的循環結構,循環代碼的優化。
4.4 精彩案例賞析
教學重點:體會Pythonic的含義,感受Python程序的美。
第5章 函數
5.1 函數定義與使用
教學重點:Python函數的定義形式,def關鍵字,不需要聲明函數的參數類型和返回值類型,括號不可以省略,冒號必須有。函數嵌套定義。函數遞歸調用。
5.2 函數參數
教學重點:形參與實參的概念,在函數內部直接修改形參不會影響實參。位置參數、默認值參數、關鍵參數和長度可變參數的用法。傳遞參數時的序列解包。
5.3 變量作用域
教學重點:在函數內如果只引用某個變量的值而沒有為其賦新值,該變量為(隱式的)全局變量;如果在函數內任意位置有為變量賦新值的操作,該變量即被認為是(隱式的)局部變量,除非在函數內顯式地用關鍵字global進行聲明。
教學難點:局部作用域與全局作用域的區別,在函數內部定義全局變量的方法。
5.4 lambda表達式
教學重點:使用lambda表達式聲明匿名函數和命名函數,在lambda表達式中調用函數,把lambda表達式作為函數參數。
教學難點:lambda表達式作為其他函數的參數。
5.5 生成器函數設計要點
教學重點:yield語句和return語句的區別,生成器對象的惰性求值特點。
教學難點:生成器對象的惰性求值。
5.6 精彩案例賞析
第6章 面向對象程序設計
6.1 類的定義與使用
教學重點:Python類的定義,class關鍵字,創建對象的方法,通過對象訪問成員的方法。
6.2 數據成員與成員方法
教學重點:私有成員與公有成員,數據成員與成員方法,類方法與靜態方法,屬性的定義與使用,混入機制。
6.3 繼承與多態
教學重點:繼承的作用與Python實現,多態的概念。
6.4 特殊方法與運算符重載
教學重點:構造函數__init__(),析構函數__del__(),__add__()、__mul__()、__pow__()及其他Python類特殊方法與運算符的對應關係。
教學難點:特殊方法與運算符及內置函數的對應關係。
6.5 精彩案例賞析
第7章 字符串
7.1 字符串編碼格式簡介
教學重點:ASCII、UTF8、GBK的區別。
7.2 轉義字符與原始字符串
教學重點:轉義字符的用法,字符串前面加字母r的含義。
7.3 字符串格式化
教學重點:format()方法,格式化的字符串常量。
7.4 字符串常用操作
教學重點:使用find()、index()、count()等方法以及關鍵字in確定字符串中是否包含另一個字符串,使用split()、partition()方法對字符串進行切分,使用join()方法連接字符串,使用replace()、translate()對字符串進行「修改」,使用strip()方法刪除字符串開始、結束或兩側的指定字符,使用lower()、upper()、capitalize()、title()、swapcase()等方法進行大小寫轉換,使用startswith()、endswith()方法測試字符串是否以另一個字符串開始或結束,使用center()、ljust()、rjust()等方法對字符串進行排版。
7.5 字符串常量
7.6 中英文分詞
教學重點:Python擴展庫jieba和snownlp的用法。
7.7 漢字到拼音的轉換
教學重點:Python擴展庫pypinyin的用法。
7.8 精彩案例賞析
第8章 正則表達式(選講)
8.1 正則表達式語法
教學重點:正則表達式基本語法與擴展語法,常用正則表達式的寫法。
8.2 直接使用正則表達式模塊re處理字符串
教學重點:compile()、match()、search()、findall()、split()、sub()、escape()等re模塊常用方法。
8.3 使用正則表達式對象處理字符串
教學重點:正則表達式對象方法的用法。
8.4 match對象
教學重點:match對象方法的用法。
8.5 精彩案例賞析
第9章 文件內容操作
9.1 文件操作基本知識
教學重點:文本文件與二進位文件的概念與訪問方法的區別,文件對象,open()方法以及flush()、close()、read()、readline()、readlines()、tell()、write()、writelines()等常用方法,上下文管理語句with的優點與用法。
教學難點:文件操作三步驟:打開文件、操作文件、關閉文件。
9.2 文本文件基本操作案例精選
教學重點:文本文件讀寫方法,read()、write()、seek()等文件對象常用方法的運用。
9.3 二進位文件操作案例精選
教學重點:二進位文件讀寫方式,對象序列化,pickle、struct、shelve等模塊的用法,Excel、Word等常見類型文件的操作。
第10章 文件與文件夾操作
10.1 os模塊
教學重點:文件夾遍歷。
10.2 os.path模塊
教學重點:路徑類型判斷,路徑連接,獲取文件屬性。
10.3 shutil模塊
教學重點:複製文件,壓縮與解壓縮,刪除目錄樹。
10.4 精彩案例賞析
第11章 異常處理結構與單元測試(選講)
11.1 異常處理結構
教學重點:異常的概念與表現形式,Python內置異常類層次結構,常見異常處理結構,斷言與上下文管理語句。
11.2 單元測試
教學重點:單元測試的意義和目的,標準庫unittest的用法。
第12章 資料庫應用開發(選講)
12.1 使用Python操作SQLite資料庫
教學重點:sqlite3模塊基本用法,Connection對象,Cursor對象,常用SQL語句。
12.2 使用Python操作其他關係型資料庫
教學重點:Access、SQL Server、MySQL等資料庫的接口。
12.3 操作MongoDB資料庫
教學重點:NoSQL的含義,MongoDB資料庫的配置和使用。
第13章 數據分析與科學計算可視化(選講)
13.1 擴展庫numpy簡介
教學重點:數組運算,矩陣運算。
13.2 科學計算擴展庫scipy
教學重點:constants模塊,special模塊,signal模塊,ndimage模塊。
13.3 擴展庫pandas簡介
教學重點:DataFrame基本操作,缺失值、重複值、異常值處理,數據差分,讀寫文件。
13.4 統計分析標準庫statistics用法簡介
13.5 matplotlib
教學重點:繪製折線圖、散點圖、餅狀圖、柱狀圖,設置圖例,繪製三維圖形。
13.6 創建詞雲
教學重點:擴展庫wordcloud的用法。
五、 教學課時分配
教學課時分配表(參考)
章 節 名 稱
課堂學時
實驗學時
第1章 Python概述
2
第2章 運算符、表達式與內置對象
4
2
第3章 Python數據結構
6
2
第4章 程序控制結構
4
2
第5章 函數
4
2
第6章 面向對象程序設計
4
第7章 字符串
6
2
第8章 正則表達式(選講)
2
第9章 文件內容操作
4
2
第10章 文件與文件夾操作
2
第11章 異常處理結構與單元測試(選講)
1
第12章 資料庫應用開發(選講)
3
2
第13章 數據分析與科學計算可視化(選講)
6
2
合計
48
16
六、 教材與參考書目
1. 教材:董付國.《Python程序設計基礎(第2版)》,清華大學出版社,2018
2. 參考書目:
l 董付國.《Python程序設計(第2版)》,清華大學出版社,2016
l 董付國.《Python可以這樣學》,清華大學出版社,2017
l 董付國.《Python程序設計開發寶典》,清華大學出版社,2017
l 董付國.《玩轉Python輕鬆過二級》,清華大學出版社,2018
l 張穎,賴勇浩著.《編寫高質量代碼——改善Python程序的91個建議》.機械工業出版社,2014
l 楊佩璐,宋強等編著.《Python寶典》.電子工業出版社,2014
l 張若愚著.《Python科學計算(第2版)》.清華大學出版社,2017