程序結構
程序結構定義就是語句和表達式按照什麼樣的順序執行
順序結構
python3的默認結構, 從上到下一行一行執行
分支結構
分支結構永遠只有一個或者0個分支會被執行:在分支結構中,有了elif可以不用寫else,所以纔會有0個分支會被執行
條件只能夠是bool類型或者可以隱式轉換爲bool類型
單分支
In [59]: a = 5
...: if a < 10:
...: print('a less than 10')
...: print(a)
...:
a less than 10
5
雙分支
雙分支結構裏, 永遠只有一個分支會被執行
In [60]: a = 5
...: if a < 10:
...: print('a less than 10')
...: else:
...: print('a not less than 10')
...: print(a)
...:
a less than 10
5
In [61]: a = 50
...: if a < 10:
...: print('a less than 10')
...: else:
...: print('a not less than 10')
...: print(a)
...:
a not less than 10
50
多分支
通過解構嵌套可以實現多分支, 但是不建議
建議用elif語法來進行多分支
In [62]: a = 50
...: if a < 10:
...: print('a < 10')
...: else:
...: if a < 20:
...: print('10 <= a < 20')
...: else:
...: print('a >= 20')
...:
a >= 20
可以通過嵌套可以實現多分支
上述例子另一種寫法
In [63]: a = 50
...: if a < 10:
...: print('a < 10')
...: elif a < 20:
...: print('10 <= a < 20')
...: else:
...: print('a >=20')
...:
a >=20
In [48]: if a < 10:
...: print('a < 10')
...: elif a < 20: # 有了elif可以不寫else
...: print('10 <= 10 < 20')
...:
循環結構
while循環(死循環)
條件爲真時死循環執行,條件爲假時,結束
In [65]: i = 0
...: while i < 10:
...: print(i)
...: i += 1
...:
0
1
2
3
4
5
6
7
8
9
一定要有某種機制修改調製使其退出循環, 通常是在循環體裏修改條件
for in 循環
文字描述
開始
for 元素 in 可迭代對象:
操作
結束
for in 循環裏永遠不要修改可迭代對象,被循環的可迭代對象會報錯
In [70]: for i in range(0, 10):
...: print(i)
0
1
2
3
4
5
6
7
8
9
break終止與continue跳過
提前終止:break,這個循環終止了,已經退出了當前for或者while循環。
跳過::continue,跳過當前循環,處於continue後面的語句都不會再執行。
break和continue只針對最近的一層
break和continue只能用在循環裏
例21:提前終止
In [71]: for i in range(0, 10):
...: if i % 2 != 0:
...: print(i)
...: break # 遇到break這個循環就全部終止了
...:
1
In [72]: for i in range(0, 10):
...: print(i)
...: if i % 2 != 0:
...: print('find it')
...: break
...:
0
1
find it
例22:跳過
In [73]: for i in range(0, 10):
...: print(i)
...: if i % 2 != 0:
...: continue
...: print(i + 1)
...:
0
1
1
2
3
3
4
5
5
6
7
7
8
9
9
In [74]: for i in range(0, 10):
...: print(i)
...: if i % 2 != 0:
...: continue
...: print('i is {}, i+1 is {}'.format(i, i + 1)) # 會將後面的循環體全部跳過
...:
0
i is 0, i+1 is 1
1 # 1對2取模不等於0, 返回爲True, 就執行continue跳過, 那麼後面的print也跳過了,所以後續直接顯示2
2
i is 2, i+1 is 3
3
4
i is 4, i+1 is 5
5
6
i is 6, i+1 is 7
7
8
i is 8, i+1 is 9
9
continue用於跳過循環體剩下的部分
In [38]: for i in range(0, 10): # 和上個示例對比, 沒有continue的部分
...: print(i)
...: if i % 2 != 0:
...: print('if % 2 is {}'.format(i))
...: print('i is {}, i+1 is {}'.format(i, i + 1))
...:
0
i is 0, i+1 is 1
1
if % 2 is 1
i is 1, i+1 is 2
2
i is 2, i+1 is 3
3
if % 2 is 3
i is 3, i+1 is 4
4
i is 4, i+1 is 5
5
if % 2 is 5
i is 5, i+1 is 6
6
i is 6, i+1 is 7
7
if % 2 is 7
i is 7, i+1 is 8
8
i is 8, i+1 is 9
9
if % 2 is 9
i is 9, i+1 is 10
例23:多層循環的break
In [75]: for i in range(0, 5):
...: for j in range(0, 10):
...: if j > 5:
...: break
...: print('i is {}, j is {}'.format(i, j))
...:
i is 0, j is 0
i is 0, j is 1
i is 0, j is 2
i is 0, j is 3
i is 0, j is 4
i is 0, j is 5 # 只有內部的for循環終止, 外部的for循環並不終止
...
i is 4, j is 4
i is 4, j is 5
In [76]: for i in range(0, 5):
...: for j in range(0, 10):
...: if j != 5:
...: continue
...: print('i is {}, j is {}'.format(i, j))
...:
i is 0, j is 5
i is 1, j is 5
i is 2, j is 5
i is 3, j is 5
i is 4, j is 5
break和continue只針對最近的一層
break和continue只能用在循環裏
else子句
在python中,不管是if還是for還有while循環都有else語句。
當循環沒有提前退出時, 都會執行else字句(也就是說,如果提前退出就不會執行else語句)
In [42]: for x in range(0, 5):
...: print(x)
...: break # 因爲是終止,所以else都終止了
...: else:
...: print('ok')
...:
0
In [41]: for x in range(0, 5):
...: print(x) # continue是僅僅針對這個循環, 所以else會有效
...: continue
...: else:
...: print('ok')
...:
0
1
2
3
4
ok
In [43]: for x in range(0, 5):
...: print(x)
...: else:
...: print('ok') # for執行完後依然會執行else語句
...:
0
1
2
3
4
ok
In [46]: a = 1
...: while a == 1:
...: print(a)
...: a+=1
...: else: # while循環後依然會執行else語句
...: print('2')
...:
1
2