- 金融商業數據分析:基于Python和SAS
- 張秋劍 張浩 周大川 常國珍
- 2009字
- 2021-12-01 13:52:44
3.5 Python的編程結構
程序控制是編程語言的基礎。Python的編程結構有順序結構、分支結構和循環結構。本節將對其做詳細的講解。
3.5.1 三種基本的編程結構簡介
Python的編程結構包括順序結構、分支結構和循環結構,如圖3-8所示。

圖3-8 Python的編程結構
- 順序結構的特點是依照次序執行代碼,并返回相應的結果。這種結構較為簡單,易于理解。
- 分支結構的特點是有條件判斷,即滿足某種條件就繼續執行,否則跳轉到另外的條件上執行。
- 循環結構程序用于處理可以迭代的對象,比如元組、列表。
在這些結構中,分支結構往往需要條件判斷語句進行控制,比如if、else等,而循環結構需要循環語句for進行控制。當然,分支結構與循環結構完全可以混合,這時就可以通過條件循環語句while進行控制。
3.5.2 順序結構
1. 順序結構簡介
現在創建一個列表:
>a = [1,2,3,4,5]
如果要打印列表中的所有元素,可以使用如下寫法:
> print (a[0]) > print (a[1]) > print (a[2]) > print (a[3]) > print (a[4]) 1 2 3 4 5
這種順序執行的編程結構就是順序結構。
2. 邏輯行與物理行
在Python中,代碼被逐行提交給解釋器并進行編譯。物理行是指編輯器里看到的一行,邏輯行是指代碼經過編譯后所在的行。Python中,每個物理行對應著一個邏輯行。例如上述print代碼的邏輯行和物理行是對應的。
但某些情況下,一個邏輯行的代碼過長時,可以分拆為多個物理行,例如:
>tuple(set(list([1,2,3,4,5,6,7,8]))) (1, 2, 3, 4, 5, 6, 7, 8)
可以寫成如下方式,
> tuple(set(list([1,2,3,\ 4,5,6,7,8]))) (1, 2, 3, 4, 5, 6, 7, 8)
符號“\”是換行的標識,此時代碼是一個邏輯行,但有兩個物理行。
當多個邏輯行代碼過短時,如:
>x = 1 > y = 2 > z = 3 > print(x,y,z) (1, 2, 3)
可以使用分號“;”將多個邏輯行轉化為一個物理行:
> x = 1;y = 2;z = 3;print(x,y,z) (1, 2, 3)
3.5.3 分支結構
分支結構的分支用于進行條件判斷。在Python中,我們使用if、elif、else、冒號與縮進表達分支。以下是一個示例:
若數值x小于0,令x等于0,且打印信息Negative changed to zero;
若第一個條件不成立,判斷x是否為0,若成立,打印Zero;
若第一、第二個條件不成立,再判斷x是否為1,若成立,打印single;
若第一、第二、第三個條件都不成立,打印more。
我們將x賦初值-2,并測試以上邏輯的輸出結果。
>x = -2 >if x < 0: > x = 0 > print('Negative changed to zero') >elif x == 0: > print('Zero') >elif x == 1: > print('Single') >else: > print('More') 'Negative changed to zero'
這里,if、elif、else組成的邏輯是一個完整的邏輯,即任何條件成立時,程序會停止后面的條件判斷。這里需注意多個if語句存在時的條件判斷結果:若把上述代碼中的elif改為if,程序執行的結果會發生變化,如下所示:
> x = -2 >if x < 0: > x = 0 > print('Negative changed to zero') >if x == 0: > print('Zero') >if x == 1: > print('Single') >else: > print('More') 'Negative changed to zero' 'Zero' 'More'
上述程序的多個if語句是串行的關系,即上一個if語句的判斷結果即使成立,下一個if語句也不會跳過,仍然會進行條件判斷。所以,x=-2在第一個if語句處會被賦值為0并繼續執行,在第二個if語句判斷為真,第三個if語句判斷為假時,再跳到else語句。
3.5.4 循環結構
這里介紹Python中的for循環結構和while循環結構。循環語句用于遍歷可迭代對象的所有取值或元素,每一個被遍歷到的取值或元素執行指定的程序并輸出。這里,可迭代對象指可以被遍歷的對象,比如列表、元組、字典等。
1. for循環
下面是一個for循環例子,i指代可迭代對象a中的一個元素。for循環條件以冒號結束,并換行縮進。第二行是每次循環執行的語句,這里是打印列表a中的每一個元素。
> a = [1,2,3,4,5] > for i in a: > print(i) 1 2 3 4 5
上述操作也可以通過遍歷可迭代對象的索引來完成。列表a一共有5個元素,range(len(a))表示生成列表a的索引序列,這里打印索引并打印向量a索引下的取值。
> a = ['Mary', 'had', 'a', 'little', 'lamb'] > for i in range(len(a)): > print(i, a[i]) (0, 'Mary') (1, 'had') (2, 'a') (3, 'little') (4, 'lamb')
2. while循環
while循環一般會設定一個終止條件,中間輸出值會隨著程序運行而發生變化。當輸出滿足條件時,循環終止。while循環可以通過條件制定循環次數,例如通過計數器來終止循環,如下所示。計數器count每循環一次自增1,當count為5時,while條件為假,終止循環。
>count = 1 >while count < 5: > count = count + 1 > print(count) 2 3 4 5
下面是一個比較特殊的示例,演示如何按照指定條件循環而不考慮循環的次數,例如編寫循環程序使x不斷減少,當x小于0.0001時,終止循環,代碼如下。
>x=10 >count = 0 >while True: > count = count + 1 > x = x - 0.02*x > if x< 0.0001: > break >print (x,count) (9.973857171889038e-05, 570)
上例中,while循環代碼中使用了break語句,表示滿足條件時終止循環。此外,我們也可通過continue、pass對循環進行控制。continue表示繼續進行循環,如下代碼嘗試使用continue和break語句打印10以內能夠被3整除的整數。
1)使用continue語句,示例如下:
>count = 0 >while count < 10: > count = count + 1 > if count % 3 == 0: > print(count) > continue 3 6 9
2)使用break語句,示例如下:
>count = 0 >while count < 10: > count = count + 1 >if count % 3 == 0: > print(count) > break 3
3)使用pass語句,示例如下:
>count = 0 >while count < 10: > count = count + 1 > if count % 3 == 0: > pass >else: > print(count) 1 2 4 5 7 8 10
3. 表達式
在Python中,諸如列表、元組、集合、字典都是可迭代對象。Python為這些對象的遍歷提供了更加簡潔的寫法。例如對列表對象x的遍歷,且每個元素除以10:
>x = [1,2,3,4,5] >[i/10 for i in x] [0.1, 0.2, 0.3, 0.4, 0.5]
上述[i/10 for i in x]的寫法稱為列表表達式,這種寫法比for循環更加簡便。此外,對于元組對象、集合對象、字典對象,這種寫法依舊適用,且最終會產生一個列表對象。
>x = (1,2,3,4,5) #元組 >[i/10 for i in x] [0.1, 0.2, 0.3, 0.4, 0.5] >x = set((1,2,3,4,5)) #集合 >[i/10 for i in x] [0.1, 0.2, 0.3, 0.4, 0.5] >x = {'a':2,'b':2,'c':5} #字典 >[i for i in x.keys()] ['a', 'c', 'b'] >[i for i in x.values()] [1, 3, 2]
- Mobile Web Performance Optimization
- Vue.js快跑:構建觸手可及的高性能Web應用
- Java加密與解密的藝術(第2版)
- NativeScript for Angular Mobile Development
- Rust Cookbook
- Java面向對象程序開發及實戰
- Mastering Google App Engine
- Oracle Exadata專家手冊
- JavaScript入門經典
- Python程序設計與算法基礎教程(第2版)(微課版)
- Advanced Python Programming
- 例解Python:Python編程快速入門踐行指南
- SaaS攻略:入門、實戰與進階
- Django 2.0 入門與實踐
- Scratch 3.0少兒積木式編程(6~10歲)