Python的循環語句
- 2021 年 7 月 25 日
- 筆記
- python小白的成長之路
循環語法
循環結構
循環結構是使用while
、for
循環語句的結構,可以減少冗餘程式碼,提升程式碼的效率。
while 循環
while
循環,while
循環的使用if
的基本相同,在while
之後使用表達式,如果表達式為真,就會反覆執行while
循環程式碼塊的作用域,每執行完一次就重新判斷while
的表達式,真就重複上述步驟,直到表達式為假才會跳出;如果一開始就是假,直接跳過。
while expression:
code0
code1
...
# 輸出1 ~~ 100 的數字,並計算出它們的和
num = 1 # 數字
sum_up = 0 # 計算和
count = 100 # 循環的次數
while count: # 判斷count的值,如果為0就跳出循環
print(num) # 輸出數字
sum_up += num # 計算他們的和
num += 1 # 數字自增
count -= 1 # 次數自減
print('和:', sum_up) # 循環結束,輸出他們的和
死循環
只要while循環的條件表達式一直為真,相應的作用域就會一直執行,無法跳出,形成死循環。死循環時循環無法跳出,循環語句之後的程式碼也不會執行。
while True :
print('死循環')
print('跳出循環') # 永遠無法跳出循環
關鍵字的使用
我們來講三個很重要的關鍵字:pass
、break
、continue
pass
意思是過、佔位符。本身是個空語句,沒有任何含義,不會做任何的事情,只是為了保持程式結構的完整性二佔據一些必要的位置。
要注意區分None
和pass
的區別,None
的意思是什麼都沒有,但是也一層布爾為假的含義;而pass
是一點意義都沒有,只是為了佔據一些位置放置出錯而已,更多的情況是用來程式的開發中使用,正式上線是很難看到這個關鍵字的。
# 程式碼塊中必須有作用域,否則出錯,但是我現在不想執行任何東西,怎麼辦?
if True:
pass # 使用pass佔位
while True:
pass # 使用pass佔位
break
只能用於循環語句當中,比如while
、for
,只要出現這個關鍵字,循環立即中斷,並跳出循環,循環作用域中未執行的程式碼也不會執行,即使是循環語句的條件表達式尚未為假,也會立刻停止執行。
count = 10
while count:
count -= 1
if count == 6:
break
print(count)
'''
結果:
9
8
7
'''
continue
只能用於循環語句當中,注意和break
的區別,continue
是跳過當前的循環語句,然後繼續循環的執行。
count = 10
while count:
count -= 1
if count == 6:
continue
print(count)
'''
結果:
9
8
7
5
4
3
2
1
0
'''
for循環語句
作用
循環、遍歷、迭代。for循環的主要作用是可以遍歷迭代可迭代對象。將遍歷可迭代對象中的數據元素此一個一個依次提取出來,然後執行程式碼塊中的程式碼,直到遍歷結束。
遍歷類型
可迭代對象:容器類型數據、range()函數、迭代器。
# for …… in 中間的變數是可迭代對象中的元素數據。
for 變數 in 可迭代對象:
code2
code1
...
# 將一個容器中的數據遍歷出來,所有的容器都是可迭代對象
container = 'hello motherland'
for i in container:
print(i)
遍歷字典只會遍歷出字典的鍵
dctvar = {'one': 1, 'two': 2, 'three': 3}
for i in dctvar:
print(i)
'''
結果;
one
two
three
'''
遍歷多級容器,我們就需要嵌套使用for循環
var = [[1, 2, 3, 4, 5], [12, 34, 56, 67, 84, 55]]
for i in var:
for j in i:
print(j)
變數的解包
對於容器,我們可以直接使用同等長度數量的變數直接將容器中的數據提取出來。
# 所有容器都支援
a, b, c, d, e = 'hello'
print(a, b, c, d, e)
a, b = ['hello', 'motherland']
print(a, b)
a, b = {'one': 1, 'two': 2} # 解包字典獲取的是字典的鍵
print(a, b)
'''
結果:
h e l l o
hello motherland
one two
'''
所以遍歷等長的多級容器的時候就可以利用變數的解包這一特性,快速遍歷容器,盡量的避免循環的嵌套使用,因為循環嵌套是十分消耗電腦資源的。
var = [[1, 2, 3, 4, 5], [12, 56, 67, 84, 55]]
for a, b, c, d, e in var:
print(a, b, c, d, e)
'''
結果:
1 2 3 4 5
12 56 67 84 55
'''
range()對象
range函數是一個可迭代對象,可以按照順序返回一些數字,可以配合for將一些複雜的工作簡化。
語法:
range([start_number], stop_number, step_number)
range([開始值], 結束值, [步長])
range的三個參數都是整型數字,range有三種使用方法
-
輸入一個參數,這個參數表示結束值,返回的結果是
0 ~~ N-1
for i in range(5): print(i) ''' 結果; 0 1 2 3 4 '''
-
輸入兩個參數,第一個參數S是開始值,第二個參數N是結束值,返回
S ~~ N-1
。for i in range(-3, 2): print(i) ''' 結果: -3 -2 -1 0 1 '''
-
輸入三個參數,第三個參數表示步長,意思是數值的增長按照步長的大小來依次返回。
# 從2開始,數字按照3來增長,默認是1 for i in range(2, 10, 3): print(i) ''' 結果: 2 5 8 '''
倒數
for i in range(5, 0, -1): print(i) ''' 結果: 5 4 3 2 1 '''
總結
while
循環一般使用再較為浮躁的邏輯當中;for
循環一般就是用於數據的遍歷。但是它們兩個之間的本質是相同的。