控制語句執行流程

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]

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • http://python.jobbole.com/85231/ 關于專業技能寫完項目接著寫寫一名3年工作經驗的J...
    燕京博士閱讀 7,628評論 1 118
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,933評論 18 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 十六歲 他對一個姑娘動了心 十七歲 他告訴了那個姑娘 他說著愛就是占有的誓詞 姑娘淚流滿面 蜜戀的圍繞 幸福蕩蕩 ...
    蘭菲兒閱讀 745評論 0 1
  • 九天秋水共一色,千葉雄峰殘照浸。 一流扁舟長篙落,畫盡綿山入平鏡。 無風無雨也無聲,唯爾笠翁戲水音。 余暉落盡青絲...
    雙生夕閱讀 108評論 0 0