本教程集“教材、練習冊、上機指導”于一體,基于Windows 10和Python 3.5.2構建Python開發平臺,闡述Python語言的基礎知識,以及使用Python語言的實際開發應用實例,具體內容包括:Python概述、Python語言基礎、程序流程控制、常用內置數據類型、系列數據類型、輸入和輸出、錯誤和異常處理、函數、類和對象、模塊和客戶端、算法與數據結構基礎、圖形用戶界面、圖形繪制、數值日期和時間處理、字符串和文本處理、文件、數據庫訪問、網絡和Web編程、多線程編程以及系統管理等。
第1章 Python概述 1
1.1 Python語言概述 1
1.1.1 Python語言簡介 1
1.1.2 Python語言的特點 1
1.1.3 Python語言的應用范圍 2
1.2 Python語言版本和開發環境 2
1.2.1 Python語言的版本 2
1.2.2 Python語言的實現 2
1.2.3 Python語言的集成開發環境 3
1.3 下載和安裝Python 3
1.3.1 下載Python 3
1.3.2 安裝Python 4
1.3.3 安裝和管理Python擴展包 4
1.4 使用Python解釋器解釋執行Python程序 6
1.4.1 運行Python解釋器 6
1.4.2 運行Python集成開發環境 7
1.5 使用文本編輯器和命令行編寫和執行Python源文件程序 8
1.5.1 編寫Hello World程序 9
1.5.2 Hello World程序(hello.py)源代碼分析 10
1.5.3 運行Python源代碼程序 10
1.5.4 命令行參數 11
1.6 使用集成開發環境IDLE編寫和執行Python源文件程序 12
1.6.1 使用IDLE編寫程序 12
1.6.2 使用IDLE編輯程序 13
1.7 在線幫助和相關資源 13
1.7.1 Python交互式幫助系統 13
1.7.2 Python文檔 16
1.7.3 Python官網 17
1.7.4 Python擴展庫索引(PyPI) 17
復習題 18
上機實踐 19
第2章 Python語言基礎 20
2.1 Python程序概述 20
2.1.1 引例 20
2.1.2 Python程序構成 20
2.2 Python對象和引用 21
2.2.1 Python對象概述 21
2.2.2 使用字面量創建實例對象 21
2.2.3 使用類對象創建實例對象 22
2.2.4 數據類型 22
2.2.5 變量和對象的引用 22
2.2.6 Python是動態類型語言 23
2.2.7 Python是強類型語言 24
2.2.8 對象內存示意圖 24
2.2.9 對象的值比較(==)和引用判別(is) 25
2.2.10 不可變對象(immutable)和可變對象(mutable) 25
2.3 標識符及其命名規則 26
2.3.1 標識符 26
2.3.2 保留關鍵字 27
2.3.3 Python預定義標識符 27
2.3.4 命名規則 27
2.4 變量和賦值語句 28
2.4.1 變量的聲明和賦值 28
2.4.2 鏈式賦值語句 28
2.4.3 復合賦值語句 29
2.4.4 刪除變量 29
2.4.5 系列解包賦值 29
2.4.6 常量 30
2.5 表達式和運算符 30
2.5.1 表達式的組成 30
2.5.2 表達式的書寫規則 31
2.5.3 運算符概述 31
2.5.4 Python運算符及其優先級 31
2.6 語句 32
2.6.1 Python語句 32
2.6.2 Python語句的書寫規則 33
2.6.3 復合語句及其縮進書寫規則 33
2.6.4 注釋語句 34
2.6.5 空語句pass 34
2.7 函數和模塊 34
2.7.1 函數的創建和調用 34
2.7.2 內置函數 35
2.7.3 模塊函數 35
2.7.4 函數API 36
2.8 類和對象 36
2.8.1 創建類對象 36
2.8.2 實例對象的創建和調用 37
2.9 模塊和包 37
復習題 37
上機實踐 39
第3章 程序流程控制 41
3.1 順序結構 41
3.2 選擇結構 41
3.2.1 分支結構的形式 42
3.2.2 單分支結構 42
3.2.3 雙分支結構 43
3.2.4 多分支結構 44
3.2.5 if語句的嵌套 45
3.2.6 if語句典型示例代碼 46
3.2.7 選擇結構綜合舉例 47
3.3 循環結構 48
3.3.1 可迭代對象 48
3.3.2 range對象 49
3.3.3 for循環 49
3.3.4 while循環 50
3.3.5 循環的嵌套 51
3.3.6 break語句 52
3.3.7 continue語句 53
3.3.8 死循環(無限循環) 54
3.3.9 else子句 55
3.3.10 循環語句典型示例代碼 55
3.3.11 循環結構綜合舉例 56
復習題 57
上機實踐 60
第4章 常用內置數據類型 64
4.1 Python內置數據類型概述 64
4.1.1 數值數據類型 64
4.1.2 序列數據類型 64
4.1.3 集合數據類型 65
4.1.4 字典數據類型 65
4.1.5 NoneType、NotImplementedType和EllipsisType 65
4.1.6 其他數據類型 65
4.2 int數據類型(任意精度整數) 65
4.2.1 整型字面量 66
4.2.2 int對象 66
4.2.3 int對象的方法 66
4.2.4 整數的運算 67
4.3 float類型(有限精度浮點數) 68
4.3.1 浮點類型字面量 68
4.3.2 float對象 68
4.3.3 float對象的方法 68
4.3.4 浮點數的運算 69
4.4 complex類型(復數) 70
4.4.1 復數類型字面量 70
4.4.2 complex對象 70
4.4.3 complex對象屬性和方法 70
4.4.4 復數的運算 70
4.5 bool數據類型(布爾邏輯值) 71
4.5.1 布爾值字面量 71
4.5.2 bool對象 71
4.5.3 邏輯運算符 72
4.6 str數據類型(字符串) 73
4.6.1 字符串字面量 73
4.6.2 字符串編碼 73
4.6.3 轉義字符 73
4.6.4 str對象 74
4.6.5 str對象屬性和方法 74
4.6.6 字符串的運算 75
4.6.7 對象轉換為字符串 75
4.6.8 字符串的格式化 75
程序流程控制
Python程序中語句執行的順序包括三種基本控制結構:順序結構、選擇結構、循環 結構。
3.1 順 序 結 構
程序中語句執行的基本順序按各語句出現位置的先后次序執行,稱為順序結構,參見圖3-1。先執行語句塊1,再執行語句塊2,*后執行語句塊3。三個語句塊之間是順序執行關系。
【例3.1】 順序結構示例(area.py):輸入三角形三條邊的邊長(為簡單起見,假設這三條邊可以構成三角形),計算三角形的面積。提示:三角形面積,其中,a、b、c是三角形三邊的邊長,h是三角形周長的一半。
import math
a = float(input("請輸入三角形的邊長a:"))
b = float(input("請輸入三角形的邊長b:"))
c = float(input("請輸入三角形的邊長c:"))
h = (a + b + c) / 2 #三角形周長的一半
area = math.sqrt(h*(h-a)*(h-b)*(h-c)); #三角形面積
print(str.format("三角形三邊分別為:a={0},b={1},c={2}", a, b, c))
print(str.format("三角形的面積 = {0}", area))
程序運行結果如下。
請輸入三角形的邊長a:3
請輸入三角形的邊長b:4
請輸入三角形的邊長c:5
三角形三邊分別為:a=3.0,b=4.0,c=5.0
三角形的面積 = 6.0
3.2 選 擇 結 構
選擇結構可以根據條件來控制代碼的執行分支,也叫分支結構。Python使用if語句來實現分支結構。
3.2.1 分支結構的形式
分支結構包含多種形式:單分支、雙分支和多分支,流程如圖3-2(a)~圖3-2(c)所示。
(a)單分支 (b)雙分支 (c)多分支
圖3-2 if語句的選擇結構
3.2.2 單分支結構
if語句單分支結構的語法形式如下:
if (條件表達式):
語句/語句塊
其中:
(1)條件表達式:可以是關系表達式、邏輯表達式、算術表達式等。
(2)語句/語句塊:可以是單個語句,也可以是多個語句。多個語句的縮進必須對齊 一致。
當條件表達式的值為真(True)時,執行if后的語句(塊),否則不做任何操作,控制將轉到if語句的結束點。其流程如圖3-2(a)所示。
條件表達式*后評價為bool值:True(真)或False(假)。Python評價方法如下:如果表達式的結果為:數值類型(0)、空字符串(" ")、空元組(())、空列表([ ])、空字典({ }),則其bool值為False(假);否則其bool值為True(真)。例如,123、"abc"、(1,2)均為True。
【例3.2】 單分支結構示例(if_2desc.py):輸入兩個數a和b,比較兩者大小,使得a大于b。
a = int(input("請輸入第1個整數:"))
b = int(input("請輸入第2個整數:"))
print(str.format("輸入值:{0}, {1}", a, b))
if (a < b):
t = a
a = b
b = t
print(str.format("降序值:{0}, {1}", a, b))
程序運行結果如下。
請輸入第1個整數:23
請輸入第2個整數:34
輸入值:23, 34
降序值:34, 23
3.2.3 雙分支結構
if語句雙分支結構的語法形式如下:
if (條件表達式):
語句/語句塊1
else:
語句/語句塊2
當條件表達式的值為真(True)時,執行if后的語句(塊)1,否則執行else后的語句(塊)2,其流程如圖3-2(b)所示。
Python提供了下列條件表達式,來實現等價于其他語言的三元條件運算符((條件)?語句1:語句2)的功能:
條件為真時的值 if (條件表達式) else條件為真時的值
例如,如果x?0,則y=x,否則y=0,可以記述為:
y = x if (x >=0) else 0
【例3.3】 計算分段函數:
此分段函數有以下幾種實現方式,請讀者自行編程測試。
(1)利用單分支結構實現。
一句單分支語句:
y = math.sin(x) + 2 * math.sqrt(x + math.exp(4)) - math.pow(x + 1, 3)
if (x<0):
y = math.log(-5 * x) - math.fabs(x * x - 8 * x) / (7 * x) + math.e
或兩句單分支語句:
if (x>=0):
y = math.sin(x) + 2 * math.sqrt(x + math.exp(4)) - math.pow(x + 1, 3)
if (x<0):
y = math.log(-5 * x) - math.fabs(x * x - 8 * x) / (7 * x) + math.e
(2)利用雙分支結構實現。
if (x>=0):
y = math.sin(x) + 2 * math.sqrt(x + math.exp(4)) - math.pow(x + 1, 3)
else:
y = math.log(-5 * x) - math.fabs(x * x - 8 * x) / (7 * x) + math.e
(3)利用條件運算語句實現。
y = (math.sin(x) + 2 * math.sqrt(x + math.exp(4)) - math.pow(x + 1, 3)) if ((x>=0)) else \
(math.log(-5 * x) - math.fabs(x * x - 8 * x) / (7 * x) + math.e)
3.2.4 多分支結構
if語句多分支結構的語法形式如下。