Python中流程控制語句
選擇結構if
循環結構for
for與range()
用while循環
增量賦值運算符
推導或內涵
1.用if語句選擇執行語句
(1)if基礎
if <條件1>: ? ? ? ? ? ? #一定要有冒號
? ? <語句1>
elif <條件2>:
? ? ?<語句2>
elif <條件3>:
? ? ? <語句3>
..........
else:
? ? ?<語句n>
示例:
(2)if語句的嵌套
if <條件>:
? ?if <條件>:
? ? ? ?<語句1>
? ?elif <條件>:
? ? ? ? ?<語句2>
else:
? ? ? ? ?<語句3>
示例:
2.用for循環執行語句
(1)for基礎
其它高級語言for語句要用循環控制變量來控制循環,Python中for語句是通過循環遍歷某一序列對象(元組、列表、字典等)來構建循環,循環結束的條件就是對象被遍歷完成,
? ? ? ? ?for語句的形式如下:
for <循環變量> in <遍歷對象>:
? ? ? <語句1>
else:
? ? ? <語句2>
基本for循環示例:
for i in [1,2,3,4,5]; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# i 是循環變量,每次循環,i會依次取得后面列表中 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 一 ?個值
? ? ? print(i,''的平方是:",i*i)
else:
? ? ? ?print('循環結束!')
(2)for語句與break語句、continue語句
break語句是中斷循環的執行,如果在for循環中執行了break語句,for語句的遍歷就會立即終止,即使還有未遍歷完的數據,還是會立即終止for循環語句。
continue語句的作用是提前停止循環體的執行,開始下一輪循環。在for語句中如果執行了continue語句,則continue語句后的循環體語句不會被執行,即提前結束了本次循環,進入下一個遍歷體循環。
示例:
for語句遍歷列表、元組、字符串的基本形式是相同的,但對字典的遍歷不同。因為字典既有鍵又有值,在遍歷時不能直接對字典進行遍歷,而是通過字典的items()、keys()、values()等方法分別遍歷其鍵和值、鍵、值,如果同時遍歷鍵和值,在遍歷時可以使用兩個循環變量來分別接收鍵和值。
示例:
(3)for語句與range()函數
for語句中的對象集合可以是列表、字典以及元組等,也可以通過range()產生一個從0至x-1的整數列表,以完成計數循環。range()函數的原型如下:
range([start,] stop[, step])
其參數含義如下:
start ? ? ?可選參數,起始數,默認值為0
stop ? ? ?終止數,如果range只有一個參數x,那么range產生一個從0至x-1的整數列表
step ? ? ?可選參數,步長,即每次循環序列增長值
示例:
輸出:
for語句使用range()函數可以構建就要已知循環次數的循環程序,也可以以range()生成的數字作為索引來訪問列表、元組、字符串中的值,還可以對遍歷的序列實行處理,以得到相關的數據。
range()函數并不是在調用時一次生成整個序列,而是遍歷一次才產生一個值,以減少內存的占用,其本質是一個迭代器。
x=(int(input('請輸入開始值(整數):')),int(input('請輸入一個結束值(整數):')))
x1=min(x)
x2=max(x)
for n in range(x1,x2+1):
? ? ? for i in range(2,n-1):
? ? ? ? ? ? if n%i==0:
? ? ? ? ? ? ? ? ? ? break
? ? ? ?else:
? ? ? ? ? ? ? print(n,'是素數。')
(4)for語句與內置迭代函數
python內置了幾種常用的迭代函數:
enumerate(seq) ? ? ? ? ? ? ? ? ? #編號迭代
sorted(seq) ? ? ? ? ? ? ? ? ? ? #排序迭代
reversed(seq) ? ? ? ? ? ? ? ? ?#翻轉迭代
zip(seq1,seq2...) ? ? ? ? ? #并行迭代
編號迭代在迭代時既返回序列中的元素,又返回該元素在序列中的編號(編號從0開始)。for語句進行編號迭代時,應使用兩個循環變量分別接收編號和元素的值。
交互式環境下示例:
排序迭代的作用是使得在for的遍歷時,先遍歷序列中較小的值,后遍歷序列中較大的值,這要求序列中的數據可以是排序的同類數據。
交互式環境下的示例:
翻轉迭代示例:
并行迭代在遍歷時同時遍歷函數中給出的seq1,seq2等序列中同一序號的元素。
交互式環境下示例:
并行迭代函數中序列值的長度不一致時,只遍歷到最短的序列的長度。
3.用while循環執行語句
(1)while基礎
while也是Python語言中構造循環結構程序的語句之一,主要用于構造特殊的循環。
while語句的基本形式:
while <條件>:
? ? ? ? ? <語句1>
else:
? ? ? ? ? ?<語句2>
與for循環不同的是,while語句只有在測試條件為假時才會停止。所以在while語句的循環體中一定要包含改變測試條件的語句,以保證循環能夠結束,避免死循環。
示例:
結果:
(2)增量賦值運算符:
python中提供增量賦值運算符很多,基本的運算符都有對應的增量運算符:
+、-、*、/、//、**、%、&、|、^、>>、<<
基本寫法:
x+=1 ? ? ? ? ? ? 意義為:x=x+1
4.推導或內涵(list comprehension)
(1)推導基礎
comprehension英文本意是理解或內涵(邏輯學用語),那么在Python中是指以緊湊的方式對列表、元組、字典等序列或一系列元素進行處理,處理結果仍然被放到一個列表、字典等序列當中的語法形式。
典型的列表推導基本形式如下:
[<i 相關表達式> for i in aiterator]
aiterator是一個可遍歷的對象,比如列表、元組,也可以是range()函數。語義為:用循環變量i去遍歷aiterator,并且將i相關表達式的值放入一個列表中。
以下兩段代碼都是獲得1~10的平方數存入列表之中。
列表推導代碼:
square=[i**i] for i in range(1,11)]
不使用列表推導,使用for:
square=[]
for i in range(1,11):
? ? ? square.append(i*i)
字典推導:
(2)推導進階
列表推導式和字典推導式不僅可以對遍歷的元素進行全部處理,還可以使用if語句實現有選擇地處理遍歷序列中的元素。基本形式如下:
[<i 相關表達式> for i in aiterator if <條件>]
{key_exp:value_exp for key_exp,value_exp in aiterator if <條件>}
獲得一個1~10中所有數的平方,且平方值為奇數的一個列表,就可以使用如下代碼:
square_odd=[i**i for i in range(1,11) if i**i %2==1]