Python可以這樣學pdf

2018年10月18日23:06:44 發表評論 97

信息量大、案例豐富、實用性強。全書包含近200個案例和上千段代碼,涉及Python基本語法和數據類型,以及GUI、網絡應用、數據庫、密碼學、科學計算與可視化、大數據、圖形圖像處理等多個領域的開發,書中一些代碼進行簡單拼湊就可以滿足實際工作中需要的很多功能。

深度與廣度兼顧。剖析Python編程模式,通過小提示、小技巧、注意、拓展知識等形式適當介紹標準庫的工作原理、內置函數的高級用法以及代碼優化和安全編程知識,同時還補充了很多擴展庫的小應用,滿足不同層次讀者需要。

語言輕松愉快,寓教于樂。以Python知識和應用為主線,偶爾穿插一點太極拳論、道德經、易經、古詩詞和其他一些文學作品中的名言名句和小故事,部分題目還給出了非常幽默的答案。

注釋量大。書中幾乎每段重要代碼都配有相關的注釋,讓讀者能夠在最短時間內理解代碼的編寫思路和要點,大幅度縮短閱讀和學習時間。

Python可以這樣學 內容簡介

《Python可以這樣學》共分16章,對Python內部工作原理進行了一定深度的剖析,99%以上的案例代碼使用Python 3.5.1實現,也適用于Python 3.4.x(除少數幾個新特性之外)和*新版本Python 3.5.2以及Python 3.6.0,極個別案例使用Python 2.7.11實現(同樣適用于其他版本Python 2.7.x,包括*新的Python2.7.12),適當介紹了Python代碼優化、系統編程和安全編程的有關知識,滿足不同層次讀者的需要。另外,書中通過小提示、小技巧、注意拓展知識等形式介紹了更多的內容,全部內容遠比章節目錄所顯示的要多,需要認真閱讀才能真正領會其中的奧妙。

本書適合作為Python程序員的開發指南,也可以作為高等院校計算機專業、軟件工程專業等專業的Python教材,還可以作為Python愛好者的指導用書。

Python可以這樣學 目錄

第1章Python基礎1

1.1Python是一種什么樣的語言1

1.2Python開發環境2

1.2.1百家爭鳴的繁榮景象2

1.2.2IDLE簡單使用6

1.3變量、運算符與表達式9

1.3.1Python變量與內置數據類型9

1.3.2常用內置函數15

1.3.3運算符與表達式21

1.3.4人機對話基本接口25

1.4模塊安裝與使用28

1.4.1安裝Python擴展庫28

1.4.2模塊導入與使用30

1.4.3編寫自己的模塊和包32

第2章Python序列35

2.1列表與列表推導式36

2.1.1列表創建與刪除36

2.1.2列表常用方法38

2.1.3列表推導式46

2.1.4切片50

2.2元組與生成器推導式54

2.2.1元組54

2.2.2生成器推導式55

2.3字典57

2.3.1字典創建和元素添加、修改與刪除57

2.3.2訪問字典對象的數據59

2.3.3案例精選61

2.4集合63[1]〖2〗Python可以這樣學[1]目錄〖2〗2.4.1集合基礎知識63

2.4.2集合操作與運算64

2.4.3案例精選67

2.5序列解包69

第3章程序控制結構與函數設計71

3.1選擇結構71

3.1.1條件表達式71

3.1.2選擇結構的幾種形式73

3.1.3案例精選79

3.2循環結構82

3.2.1for循環與while循環的基本語法82

3.2.2break與continue語句83

3.2.3循環代碼優化技巧84

3.2.4案例精選86

3.3函數設計與使用90

3.3.1基本語法91

3.3.2函數參數不得不說的幾件事94

3.3.3變量作用域99

3.3.4lambda表達式102

3.3.5案例精選104

第4章面向對象程序設計122

4.1基礎知識122

4.1.1類的定義與使用122

4.1.2私有成員與公有成員123

4.1.3數據成員125

4.1.4方法126

4.1.5屬性129

4.1.6繼承131

4.1.7特殊方法與運算符重載134

4.2案例精選135

4.2.1自定義數組135

4.2.2自定義矩陣141

4.2.3自定義隊列147

4.2.4自定義棧151

4.2.5自定義二叉樹154

4.2.6自定義有向圖157

4.2.7自定義集合158

第5章字符串與正則表達式165

5.1字符串165

5.1.1字符串格式化的兩種形式168

5.1.2字符串常用方法171

5.1.3案例精選186

5.2正則表達式190

5.2.1正則表達式語法與子模式擴展語法190

5.2.2re模塊方法與正則表達式對象193

5.2.3案例精選199

第6章文件與文件夾操作206

6.1文件對象常用方法與屬性207

6.2文本文件操作案例精選209

6.3二進制文件操作案例精選217

6.3.1使用pickle模塊讀寫二進制文件217

6.3.2使用struct模塊讀寫二進制文件219

6.3.3使用shelve模塊操作二進制文件220

6.3.4使用marshal模塊操作二進制文件220

6.4文件與文件夾操作221

6.4.1標準庫os、os.path與shutil簡介221

6.4.2案例精選227

第7章異常處理結構、代碼測試與調試252

7.1異常處理結構252

7.1.1異常是什么252

7.1.2Python內置異常類層次結構254

7.1.3常見異常處理結構形式255

7.2代碼測試262

7.2.1doctest263

7.2.2單元測試264

7.3代碼調試270

7.3.1使用IDLE調試270

7.3.2使用pdb調試273

階段性寄語278

第8章數據庫應用開發279

8.1使用Python操作SQLite數據庫279

8.1.1Connection對象280

8.1.2Cursor對象281

8.1.3Row對象284

8.2使用Python操作其他關系型數據庫285

8.2.1操作Access數據庫285

8.2.2操作MS SQL Server數據庫286

8.2.3操作MySQL數據庫288

8.3操作MongoDB數據庫290

第9章網絡應用開發293

9.1計算機網絡基礎知識293

9.2Socket編程295

9.2.1UDP編程296

9.2.2TCP編程298

9.2.3網絡嗅探器300

9.2.4多進程端口掃描器302

9.2.5代理服務器端口映射功能的實現305

9.2.6自己編寫FTP通信軟件308

9.3域名解析與網頁爬蟲313

9.3.1網頁內容讀取與域名分析313

9.3.2網頁爬蟲315

9.3.3scrapy框架316

9.3.4BeautifulSoup4318

9.4網站開發323

9.4.1使用IIS運行Python CGI程序323

9.4.2Python在ASP.NET中的應用325

9.4.3Flask框架簡單應用327

9.4.4django框架簡單應用328

第10章多線程與多進程333

10.1多線程編程334

10.1.1線程創建與管理336

10.1.2線程同步技術339

10.2多進程編程346

10.2.1進程創建與管理347

10.2.2進程間數據交換347

10.2.3進程同步技術350

第11章大數據處理351

11.1大數據簡介351

11.2MapReduce框架352

11.3Spark應用開發356

第12章圖形編程與圖像處理361

12.1圖形編程361

12.1.1繪制三維圖形361

12.1.2繪制三次貝塞爾曲線364

12.1.3紋理映射365

12.1.4響應鍵盤事件368

12.1.5光照模型369

12.2圖像處理372

12.2.1pillow模塊基本用法372

12.2.2計算橢圓中心375

12.2.3動態生成比例分配圖376

12.2.4生成驗證碼圖片377

12.2.5gif動態圖像分離與生成379

12.2.6材質貼圖380

12.2.7圖像融合381

12.2.8棋盤紋理生成383

第13章數據分析與科學計算可視化384

13.1擴展庫numpy簡介384

13.2科學計算擴展庫scipy393

13.2.1數學、物理常用常數與單位模塊constants394

13.2.2特殊函數模塊special395

13.2.3信號處理模塊signal395

13.2.4圖像處理模塊ndimage397

13.3擴展庫pandas簡介401

13.4統計分析標準庫statistics用法簡介405

13.5matplotlib407

13.5.1繪制正弦曲線408

13.5.2繪制散點圖408

13.5.3繪制餅狀圖410

13.5.4繪制帶有中文標簽和圖例的圖410

13.5.5繪制圖例標簽中帶有公式的圖411

13.5.6使用pyplot繪制,多個圖形單獨顯示412

13.5.7繪制三維參數曲線413

13.5.8繪制三維圖形414

13.5.9使用指令繪制自定義圖形416

13.5.10在tkinter中使用matplotlib417

13.5.11使用matplotlib提供的組件實現交互式圖形顯示419

13.5.12根據實時數據動態更新圖形421

13.5.13使用Slider組件調整曲線參數422

第14章密碼學編程425

14.1經典密碼算法425

14.1.1愷撒密碼算法425

14.1.2維吉尼亞密碼427

14.1.3換位密碼算法428

14.2安全哈希算法429

14.3對稱密鑰密碼算法DES和AES432

14.4非對稱密鑰密碼算法RSA與數字簽名算法DSA433

14.4.1RSA433

14.4.2DSA435

第15章tkinter編程精彩案例436

15.1用戶登錄界面436

15.2選擇類組件應用438

15.3簡單文本編輯器441

15.4簡單畫圖程序445

15.5電子時鐘449

15.6簡單動畫451

15.7多窗口編程454

15.8屏幕任意區域截圖456

15.9音樂播放器458

15.10遠程桌面監控系統462

第16章課堂教學管理系統設計與實現466

16.1功能簡介466

16.1.1教師端功能466

16.1.2學生端功能467

16.2數據庫設計468

16.3系統總框架與通用功能設計469

16.4數據導入功能473

16.4.1學生名單導入473

16.4.2題庫導入473

16.5點名與加分功能475

16.5.1在線點名475

16.5.2離線點名與加分477

16.6隨機提問功能480

16.7在線收作業功能482

16.7.1學生端482

16.7.2教師端483

16.8在線自測與在線考試功能485

16.8.1學生端486

16.8.2教師端488

16.9信息查看功能490

16.10數據導出功能492

16.11其他輔助功能493

16.11.1防作弊功能493

16.11.2服務器自動發現功能493

16.11.3Word版試卷生成功能494

結束語496

附錄A本書中例題清單497

附錄B本書中插圖清單503

附錄C本書中表格清單507

附錄D本書中拓展知識摘要清單508

參考文獻513

Python可以這樣學 精彩文摘

第3章程序控制結構與函數設計

3.1選 擇 結 構

生活中處處充滿了選擇: 如果周末不下雨我就約朋友去爬山,否則就去教學樓大廳里打太極拳;如果某個同學平時學習很認真但是期末考試前確實因為臨時有事耽誤了復習而沒有考好,只要差得不太多我也一樣給打及格;去市場買菜的時候比較一下,哪家的菜又好又便宜就買哪家的;諸如此類,我們時刻都在根據實際條件做出這樣或那樣的選擇。編寫程序也是如此,當某個條件得到滿足時就去做特定的事情,否則就做另一件事情,這就是選擇結構。

3.1.1條件表達式

在選擇結構和循環結構中,都要根據條件表達式的值來確定下一步的執行流程。條件表達式的值只要不是False、0(或0.0、0j等)、空值None、空列表、空元組、空集合、空字典、空字符串、空range對象或其他空迭代對象,Python解釋器均認為與True等價。從這個意義上來講,所有的Python合法表達式都可以作為條件表達式,包括含有函數調用的表達式。例如: >>> if 3:#使用整數作為條件表達式

print(5)

5

>>> a=\[1, 2, 3\]

>>> if a:#使用列表作為條件表達式

print(a)

\[1, 2, 3\]

>>> a=\[\]

>>> if a:

print(a)

else:

print('empty')

empty

>>> i=s=0

>>> while i <= 10:#使用關系表達式作為條件表達式s += i

i += 1

>>> print(s)

55

>>> i=s=0

>>> while True:#使用常量True作為條件表達式

s += i

i += 1

if i>10:#符合特定條件時使用break語句退出循環

break

>>> print(s)

55

>>> s=0

>>> for i in range(0, 11, 1):#遍歷序列元素

s += i

>>> print(s)

55[1]〖2〗Python可以這樣學[1]第3章程序控制結構與函數設計〖2〗關于表達式和運算符的詳細內容在1.3.3節中已有介紹,這里不再贅述,只重點介紹一下比較特殊的幾個運算符。首先是關系運算符,與很多語言不同的是,在Python中的關系運算符可以連續使用,例如:>>> print(1<2<3)

True

>>> print(1<2>3)

False

>>> print(1<3>2)

True在Python中,條件表達式中不允許使用賦值運算符“=”,避免了其他語言中誤將關系運算符“==”寫作賦值運算符“=”帶來的麻煩,例如,下面的代碼在條件表達式中使用賦值運算符“=”將拋出異常,提示語法錯誤。>>> if a=3:#條件表達式中不允許使用賦值運算符

SyntaxError: invalid syntax

>>> if(a=3)and(b=4):

SyntaxError: invalid syntax比較特殊的運算符還有邏輯運算符and和or,這兩個運算符具有短路求值或惰性求值的特點,簡單地說,就是只計算必須計算的表達式的值。以and為例,對于表達式“表達式1 and 表達式2”而言,如果“表達式1”的值為False或其他等價值時,不論“表達式2”的值是什么,整個表達式的值都是False,此時“表達式2”的值無論是什么都不影響整個表達式的值,因此將不會被計算,從而減少不必要的計算和判斷。另外,Python中的邏輯運算符在某些方面和其他語言也有所不同,例如: >>> 3 and 5

5

>>> 3 or 5

3

>>> 0 and 5

0

>>> 0 or 5

5

>>> not 3

False

>>> not 0

True下面的函數使用指定的分隔符把多個字符串連接成一個字符串,如果用戶沒有指定分隔符則使用逗號。>>> def Join(chList, sep=None):

return(sep or ',').join(chList)#注意:參數sep不是字符串時會拋出異常

>>> chTest=\['1', '2', '3', '4', '5'\]

>>> Join(chTest)

'1,2,3,4,5'

>>> Join(chTest, ':')

'1:2:3:4:5'

>>> Join(chTest, ' ')

'1 2 3 4 5'當然,也可以把上面的函數直接定義為下面帶有默認值參數的形式: >>> def Join(chList, sep=','):

return sep.join(chList)小技巧: 在設計包含多個條件的條件表達式時,如果能夠大概預測不同條件失敗的概率,并將多個條件根據and和or運算符的短路求值特性來組織順序,可以大幅度提高程序運行效率,減少不必要的計算,這也屬于代碼優化的內容。

拓展知識: 邏輯運算符與常見電路連接方式的相似之處。大家應該都學過高中物理,還記得并聯電路、串聯電路、短路這樣的概念嗎?可以做個簡單類比,or運算符類似于并聯電路,只要有一個開關是通的那么燈就是亮的;and運算符類似于串聯電路,必須所有開關是通的那么燈才是亮的;not運算符類似于短路電路,如果開關通了那么燈就滅了,如圖31所示。

圖31邏輯運算符與幾種電路的類比關系

3.1.2選擇結構的幾種形式

選擇結構通過判斷某些特定條件是否滿足來決定下一步的執行流程,是非常重要的控制結構。常見的有單分支選擇結構、雙分支選擇結構、多分支選擇結構以及嵌套的分支結構,形式比較靈活多變,具體使用哪一種最終還是取決于要實現的業務邏輯。循環結構和異常處理結構中也可以帶有else子句,也可以看作是特殊形式的選擇結構。

1. 單分支選擇結構

單分支選擇結構是最簡單的一種形式,其語法如下所示,其中表達式后面的冒號“:”是不可缺少的,表示一個語句塊的開始,后面幾種其他形式的選擇結構和循環結構中的冒號也是必須要有的。圖32單分支選擇結構

if 表達式:

語句塊當表達式值為True或其他等價值時,表示條件滿足,語句塊將被執行,否則該語句塊將不被執行,繼續執行后面的代碼(如果有),如圖32所示。

下面的代碼簡單演示了單分支選擇結構的用法: x=input('Input two numbers:')

a, b=map(int, x.split())

if a>b:

a, b=b, a#序列解包,交換兩個變量的值

print(a, b)注意: 在Python中,代碼的縮進非常重要,縮進是體現代碼邏輯關系的重要方式,同一個代碼塊必須保證相同的縮進量。有的老師讓學生學習Python的原因之一就是Python對代碼排版或布局的嚴格要求可以培養學生嚴謹的習慣。而實際上,只要遵循一定的約定,Python代碼的排版是可以降低要求的,例如下面的代碼: >>> if 3>2: print('ok')#如果語句較短,可以直接寫在分支語句后面

ok

>>> if True:print(3);print(5)#在一行寫多個語句,使用分號分隔

3

5小提示: 在上面代碼中,“a, b=b, a”是Python序列解包的用法,用來交換兩個變量的值,等價于C語言的如下3條代碼(假設變量已經聲明并且類型正確),關于序列解包更多內容請參考2.5節。c=a;

a=b;

b=c;2. 雙分支選擇結構

雙分支選擇結構的語法為if 表達式:

語句塊1

else:

語句塊2當表達式值為True或其他等價值時,執行語句塊1,否則執行語句塊2,如圖33所示。

圖33雙分支選擇結構

下面的代碼演示了雙分支選擇結構的用法: >>> chTest=\['1', '2', '3', '4', '5'\]

>>> if chTest:

print(chTest)

else:

print('Empty')

\['1', '2', '3', '4', '5'\]拓展知識: Python還提供了一個三元運算符,可以實現與選擇結構相似的效果。語法為value1 if condition else value2當條件表達式condition的值與True等價時,表達式的值為value1,否則表達式的值為value2。另外,value1和value2本身也可以是復雜表達式,也可以包含函數調用。下面的代碼演示了上面的表達式的用法,可以看出,這個結構的表達式也具有惰性求值的特點。>>> a=5

>>> print(6)if a>3 else print(5)

6

>>> print(6 if a>3 else 5)#注意,雖然結果與上一行代碼一樣,但代碼含義不同

6

>>> b=6 if a>13 else 9#賦值運算符優先級低

>>> b

9

>>> x=math.sqrt(9)if 5>3 else random.randint(1, 100)

#此時還沒有導入math模塊

Traceback(most recent call last):

File "", line 1, in

x=math.sqrt(9)if 5>3 else random.randint(1,100)

NameError: name 'math' is not defined

>>> import math

#此時沒有導入random模塊,由于條件表達式5>3的值為True,所以可以正常運行

>>> x=math.sqrt(9)if 5>3 else random.randint(1,100)

#第一個條件表達式2>3的值為False,需要計算第二個表達式的值,然而此時還沒有導入random模塊,從而出錯

>>> x=math.sqrt(9)if 2>3 else random.randint(1, 100)

Traceback(most recent call last):

File "", line 1, in

x=math.sqrt(9)if 2>3 else random.randint(1,100)

NameError: name 'random' is not defined

>>> import random

>>> x=math.sqrt(9)if 2>3 else random.randint(1, 100)最后,三元運算符是可以嵌套使用的,可以實現多分支選擇的效果,但這樣的代碼可讀性非常不好,不建議使用。>>> x=3

>>>(1 if x>2 else 0)if f(x)>5 else('a' if x<5 else 'b')

#可以嵌套使用,但不提倡這樣用

1

>>> x=0

>>>(1 if x>2 else 0)if f(x)>5 else('a' if x<5 else 'b')

'a' 3. 多分支選擇結構

多分支選擇結構為用戶提供了更多的選擇,可以實現復雜的業務邏輯,多分支選擇結構的語法為if 表達式1:

語句塊1

elif 表達式2:

語句塊2

elif 表達式3:

語句塊3

else:

語句塊n其中,關鍵字elif是else if的縮寫。下面的代碼演示了如何利用多分支選擇結構將成績從百分制變換到等級制。>>> def func(score):

if score>100:

return 'wrong score.must <= 100.'

elif score >= 90:

return 'A'

elif score >= 80:

return 'B'

elif score >= 70:

return 'C'

elif score >= 60:

return 'D'

elif score >= 0:

return 'E'

else:

return 'wrong score.must >0'

>>> func(120)

'wrong score.must <= 100.'

>>> func(99)

'A'

>>> func(87)

'B'

>>> func(62)

'D'

>>> func(3)

'E'

>>> func(-10)

'wrong score.must >0'4. 選擇結構的嵌套

選擇結構可以進行嵌套來表達復雜的業務邏輯,語法如下: if 表達式1:

語句塊1

if 表達式2:

語句塊2

else:

語句塊3

else:

if 表達式4:

語句塊4圖3 4代碼層次與隸屬關系

圖書網:Python可以這樣學pdf

此資源下載價格為2圖書幣,請先
  • 我的微信
  • 掃一掃加好友
  • weinxin
  • 微信公眾號
  • 掃一掃關注
  • weinxin

發表評論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: