Python中的分支和迴圈
阿新 • • 發佈:2018-12-22
分支和迴圈
一、分支結構
Python中的分之結構只有if語句,沒有switch語句.
1、if語句
a.語法:
if 條件語句:
程式碼段
b.說明:
-
if - 關鍵字
- 條件語句 - 任何有結果的表示式(不管結果是什麼型別)
-
: - 固定寫法
- 程式碼段 - 和if保持一個縮排的一條或者多條語句
c.執行過程:
- 先判斷條件語句的結果是否是True,如果是True就執行程式碼段,否則就不執行
注意:
如果條件語句的結果不是布林,會先將結果轉換成布林再判斷; 賦值語句不能寫在if的後面,其他語句基本上都可以。
2、if-else
a.語法:
if 條件語句:
程式碼段1
else:
程式碼段2
b.執行過程:
先判斷條件語句的結果是否為True,如果是True就執行程式碼段1,否則就執行程式碼段2
3、if-elif-else
a.語法:
if 條件語句1:
程式碼段1
elif 條件語句2:
程式碼段2
elif 條件語句3:
程式碼段3
……
else:
程式碼段n
b.執行過程:
- 先判斷條件語句1的結果是否為True,為True就執行程式碼段1;
- 否則,就判斷條件語句2的結果是否為True,為True就執行程式碼段2;
- 否則,就判斷條件語句3的結果是否為True,為True就執行程式碼段3;
- 以此類推,如果前面的條件語句都為False,就執行else後面的程式碼段n
注意:
- 1.後面條件的判斷前提是前面的條件不成立
- 2.這兒的elif根據情況可以有多個 else也可以省略
4、if巢狀
指的是可以在if、elif、else後面的程式碼段中,都可以再寫其他的if語句。
二、for迴圈
1、for迴圈
a.語法:
for 變數 in 序列:
迴圈體
b.說明:
- for - 關鍵字
- 變數 - 變數名 隨便命名(滿足變數名的要求)
- in - 關鍵字
- 序列 - 字串 列表 元組 字典 集合 迭代器(如:range)
- 迴圈體 - 和for保持一個縮排的一條或者多條語句(需要重複執行的程式碼)
c.執行過程:
讓變數去序列中取值,一個一個地取,取完為止,每取一個值,執行一次迴圈體(for迴圈中,序列中元素的個數,決定了迴圈的次數,序列中的內容控制每次變數取到的值)
d.如果for後面的變數取到的值,再迴圈裡面不使用,那麼這個變數命名的時候,用一個 _ 來命名
2、range
用法:
- range(n) - 產生一個數字序列,序列中的內容是0 ~ n-1(結果是序列)
- range(m, n) - 產生一個數字序列,序列中的內容是m ~ n-1(結果是序列)
- range(m, n, step) - 產生一個數字序列,序列從m開始,每次加step,直到n前為止
range一般用在:
a.需要產生指定範圍的數字序列
b.單純地控制for迴圈的迴圈次數
三、while迴圈
1、while迴圈
a.語法:
while 條件語句:
迴圈體
b.說明:
while - 關鍵字
條件語句 - 有結果的表示式(除了賦值語句,一般的表示式都行)
: - 固定寫法
迴圈體 - 和while保持一個縮排的一個或者多條語句(會被重複執行)
c.執行過程(重點!):
先判斷條件語句是否為True,為True就執行迴圈體;
執行完迴圈體再判斷條件語句是否為True,為True又執行迴圈體;
執行完迴圈體再判斷條件語句是否為True,為True又執行迴圈體;
……
依次類推,直到判斷條件語句的結果為False,整個迴圈就結束
2、for迴圈和while迴圈的選擇
python中,for迴圈能做到的,while迴圈都能做到,但是while迴圈能做的,for迴圈不一定能做到。
使用for迴圈:
- a.獲取序列中的元素(值)
- b.迴圈次數確定
while迴圈:
- a.死迴圈
- b.迴圈次數不確定
四、break、continue和else
1、continue
continue是一個關鍵字,只能寫在迴圈體中
功能:
當迴圈體執行過程中遇到continue,會結束當次迴圈,直接進入下次迴圈的判斷;
(直接進入下次迴圈的判斷:for迴圈就是用變數取下一個值,while迴圈就是直接判斷條件語句是否為True)
2、break
break是一個關鍵字 只能寫在迴圈體中
功能:當迴圈過程中遇到了break 整個迴圈直接結束
3、else
a.語法:
while 條件語句:
迴圈體
else:
程式碼段
for變數 in 序列:
迴圈體
else:
程式碼段
b.執行過程:
else結構不會影響原迴圈的執行過程,當迴圈自然死亡(指for迴圈中取值取完,while中條件語句成為False)的時候就會執行else中的程式碼段;
迴圈因為遇到break而結束的時候,不會執行else後面的程式碼段。