大爽Python入門教程 3-3 循環:`for`、`while`


大爽Python入門公開課教案 點擊查看教程總目錄

for循環

可迭代對象iterable

不同於其他語言。
python的for循環只能用於遍歷 可迭代對象iterable 的項。
即只支持以下語法:

for item in iterable:
    ...

其中

  • iterable是可迭代對象
  • item是可迭代對象中的項。
  • ...是(要換成)循環時要執行的代碼。

可迭代對象的定義和具體原理解釋起來比較復雜(其實我也不是很會Orz)。

這里只需要了解基礎的。
哪些是(基礎的)可迭代對象。

回顧一下,我們現階段所學習的對象,
哪些是是可迭代的。

  • 序列sequence,包括字符串str,元組tuple,列表list
  • 字典dict,迭代出的項是鍵key
  • range(n)

這里再進一步的介紹下range這個函數

range

首先回顧下for i in range(n)的效果,
i從0,1,2遍歷到n-1。
示例如下

>>> for i in range(5):
...     print(i)
...
0
1
2
3
4

實際上,該方法會產生一個可迭代對象。
不過可以用list方法將其產生的可迭代對象
轉換成列表。

>>> range(5)
range(0, 5)
>>> list(range(5))
[0, 1, 2, 3, 4]

有時可以使用這個辦法快速生成列表。

接下來,我們詳細的介紹下range這個函數。

為了便於理解,大家可以認為range函數有三種寫法:

  • range(end): 從0,1,2迭代到n-1。
  • range(start, end): 從start, start+1, start+2 迭代到n-1。
    即迭代時,每次增長1
  • range(start, end, step): 從start, start+step, start+2*step迭代到n-1。
    即迭代時,每次增長step。(step本身有步長的意思,或者說一步的距離)

實際上,第三種寫法range(start, end, step)是完整形態。
第二種寫法是step為1的特殊形態。(step默認值為1)
第一種寫法是start為0、step為1的特殊形態。(start默認值為0)

到這里,大家應該能理解:
我們上面調用range(5)的時候,
實際上得到range(0, 5)的原因了。

代碼示例

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(5, 10))
[5, 6, 7, 8, 9]
>>> list(range(0, 10, 2))
[0, 2, 4, 6, 8]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]

while循環

for循環的特點是,直接遍歷可迭代對象。
while循環的特點是,按條件循環。
其語法如下。

while condition:
    statement
  • condition,循環條件
  • statement: 循環體。
  1. 如果conditionTrue,則執行下方縮進的代碼塊statement
    否則,跳出while循環。
  2. (conditionTrue時)執行完代碼塊statement之后,
    回到循環開頭while condition處,重復步驟一。

使用示例

n = 5
while n > 0:
    n -= 1
    print(n)

其輸出為

4
3
2
1
0

breakcontinue

  • break: 直接退出(跳出)循環
  • continue: 跳過本輪循環,進入下一輪循環。

break示例

lst = [10, 5, 2, 9, 3, -1, 6, 7]

for item in lst:
    if item < 0:
        break

    print(item)

其輸出為

10
5
2
9
3

解釋:
遍歷列表中的每一項item
item小於0時,break中斷了整個循環。
后面的項就無法被遍歷。

continue示例

lst = [10, 5, 2, 9, 3, -1, 6, 7]

for item in lst:
    if item < 0:
        continue

    print(item)

其輸出為

10
5
2
9
3
6
7

解釋:
遍歷列表中的每一項item
item小於0時,跳過本輪循環,本輪后面的代碼(即print(item))不再執行,
進入下一輪循環, 直接遍歷列表的下一個item

其效果為遇到小於0的item不輸出(跳過輸出)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM