iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
Python

30天導讀 Python Software Foundation 官方翻譯文件系列 第 7

Day 6 -深入了解流程控制~導讀 Python Software Foundation 教學文件

  • 分享至 

  • xImage
  •  

深入了解流程控制

除了 while,這章節還會介紹一些 Python 的陳述式語法。

4.1. if 陳述式

最常見的陳述式種類是 if 。舉例來說:我輸入以下程式碼
https://ithelp.ithome.com.tw/upload/images/20240921/201626730yiuXBp9mh.png
再空格中輸入一個數字後,就會顯示 more
https://ithelp.ithome.com.tw/upload/images/20240921/20162673jvtNFddbg1.png

在陳述式中,可以沒有或有許多個 elif 敘述,且 else 敘述並不是必要的。關鍵字 elif 是「else if」的縮寫,用來避免過多的縮排。一個 if ... elif ... elif ... 序列可以用來替代其他程式語言中的 switch 或 case 陳述式。
如果你要將同一個值與多個常數進行比較,或者檢查特定的型別或屬性,你可能會發現 match 陳述式也很有用。更多的細節,請參閱 match 陳述式。


4.2. for 陳述式

在 Python 中的 for 陳述式有點不同於在 C 或 Pascal 中的慣用方式。相較於只能疊代 (iterate) 一個等差數列(如 Pascal),或給予使用者定義疊代步驟與終止條件(如 C),Python 的 for 陳述式疊代任何序列(list 或者字串)的元素,順序與它們出現在序列中的順序相同。例如(無意雙關):
https://ithelp.ithome.com.tw/upload/images/20240921/20162673weR6qzrmPO.png

在疊代一個集合的同時修改該集合的內容,很難獲取想要的結果。比較直觀的替代方式,是疊代該集合的副本,或建立一個新的集合:
https://ithelp.ithome.com.tw/upload/images/20240921/20162673xmKHOZltHI.png


4.3. range() 函式

如果你需要疊代一個數列的話,使用內建 range() 函式就很方便。它可以生成一等差數列:
https://ithelp.ithome.com.tw/upload/images/20240921/201626731w6BvJjKT6.png

給定的結束值永遠不會出現在生成的序列中;range(10) 生成的 10 個數值,即對應存取一個長度為 10 的序列內每一個項目的索引值。也可以讓 range 從其他數值開始計數,或者給定不同的公差(甚至為負;有時稱之為 step):
https://ithelp.ithome.com.tw/upload/images/20240921/20162673h064XpflHJ.png

欲疊代一個序列的索引值,你可以搭配使用 range() 和 len() 如下:
https://ithelp.ithome.com.tw/upload/images/20240921/20162673hI9zq9i7NU.png
然而,在多數的情況,使用 enumerate() 函式將更為方便,詳見迴圈技巧。

如果直接印出一個 range 則會出現奇怪的輸出:
https://ithelp.ithome.com.tw/upload/images/20240921/201626739c0a4t9M1I.png

在很多情況下,由 range() 回傳的物件表現得像是一個 list(串列)一樣,但實際上它並不是。它是一個在疊代時能夠回傳所要求的序列中所有項目的物件,但它不會真正建出這個序列的 list,以節省空間。

我們稱這樣的物件為 iterable(可疊代物件),意即能作為函式及架構中可以一直獲取項目直到取盡的對象。我們已經了解 for 陳述式就是如此的架構,另一個使用 iterable 的函式範例是 sum():
https://ithelp.ithome.com.tw/upload/images/20240921/20162673bReIqUjcsw.png

我們可以看到更多回傳 iterable 和使用 iterable 為引數的函式。在資料結構章節中,我們會討論更多關於 list() 的細節。


上一篇
Day 5 -把 Python 當作計算機使用(串列篇)~導讀 Python Software Foundation 教學文件
下一篇
Day 7 -深入了解流程控制~導讀 Python Software Foundation 教學文件
系列文
30天導讀 Python Software Foundation 官方翻譯文件12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言