官术网_书友最值得收藏!

2.6 流程控制語句

Python的流程控制語句分為條件語句和循環語句。條件語句是指if語句,循環語句是指for循環語句和while循環語句。本節將分別講解這幾種控制語句的使用方法。

2.6.1 if條件語句

1.簡單的if語句

if語句允許僅當某些條件成立時才運行某個區塊的語句(即運行if語句中縮進部分的語句),否則,這個區塊中的語句會被忽略,然后執行區塊后的語句。

Python在執行if語句時,會去檢測if語句中的條件是真還是假。如果條件為真,則執行冒號下面縮進部分的語句;如果條件為假,則忽略縮進部分的語句,執行下一行未縮進的語句。

案例6:判斷是否能坐過山車

如下所示為用于判斷是否能坐過山車的簡單if語句。

上述語句第一條語句的含義:新建一個變量“age”,然后在屏幕上打印“請輸入您的年齡:”等待用戶輸入,當用戶輸入后,將用戶輸入的內容轉換為整型,賦給變量“age”。語句中“age”為新定義的變量;int()函數用來將字符串或數字定義為整數;input()為輸入函數,將用戶輸入的內容賦給變量“age”。

第二和三條語句為if語句。它包括if、冒號(:)及下面的縮進部分的語句。其中if與冒號之間的部分為條件(即age>=16為條件)。程序執行時,Python會去判斷條件為真還是假;如果條件為真(即條件成立),則接著執行下面縮進部分的語句;如果條件為假(即不成立),則忽略縮進部分的語句。

上述代碼運行結果如下(輸入18)。

上述if語句是如何執行的呢?

1)首先在屏幕上打印“請輸入您的年齡:”,然后等待。

2)當用戶輸入“18”后,將“18”轉換為整型,然后賦給變量“age”,這時變量的值為18。

3)接著執行if語句,先檢測“age>=16”是真是假。由于18>16,因此條件為真。Python開始執行下一行縮進部分的語句,打印輸出“您可以坐過山車了”,結束程序。

如果用戶輸入的是“15”,程序會輸出什么結果呢?運行程序,用戶輸入“15”后,由于條件語句的條件不成立,因此直接忽略if語句中縮進部分的語句,執行下面未縮進部分的語句。

2.if-else語句

人們常常想讓程序這樣執行:如果一個條件為真(True),做一件事;如果條件為假(False),做另一件事情。對于這樣的情況,可以使用if-else語句。if-else語句與前面講的if語句類似,但其中的else語句讓你能夠指定條件為假時,要執行的語句。即如果if語句條件判斷是真(True),就執行下一行縮進部分的語句,同時忽略后面的else部分語句;如果if語句條件判斷是假(False),忽略下一行縮進部分的語句,去執行else語句及else下一行縮進部分的語句。

案例7:判斷是否能坐過山車(改進版)

如下所示為用if-else語句判斷是否能坐過山車。

01行代碼作用是新建一個變量“age”,并將用戶輸入的值賦給變量“age”。

02~05行代碼為if-else語句。程序執行時,Python會去判斷if語句中的條件(即age>=16)為真還是假;如果條件為真(即條件成立),則接著執行下一行縮進部分的語句,并忽略else語句及else下面的縮進部分語句;如果條件為假(即不成立),則忽略下一行縮進部分的語句,執行else語句及else下一行縮進部分的語句。

上述代碼運行結果如下(輸入15)。

上述代碼運行結果如下(輸入19)。

上述if-else程序是如何執行的呢?

1)首先在屏幕上打印“請輸入您的年齡:”,然后等待。

2)當用戶輸入“15”后,將“15”轉換為整型,然后賦給變量“age”,這時變量的值為15。

3)執行if語句,先檢測“age>=16”是真是假。由于15<16,因此條件為假。Python忽略下一行縮進部分的語句,執行else語句。

4)執行else語句下一行縮進部分的語句,打印輸出“您太小了,還不能坐過山車”,結束程序。

5)再次運行程序,在屏幕上打印“請輸入您的年齡:”,然后等待。

6)當用戶輸入“19”后,將“19”轉換為整型,然后賦給變量“age”,這時變量的值為19。

7)執行if語句,先檢測“age>=16”是真是假。由于19>16,因此條件為真。Python開始執行下一行縮進部分的語句,打印輸出“您可以坐過山車了”。

8)忽略else語句及else下面縮進部分的語句,結束程序。

3.if-elif-else語句

在編寫程序時,如果需要檢查超過兩個條件的情況時,可以使用if-elif-else語句。在使用if-elif-else語句時,會先判斷if語句中條件的真假;如果條件為真就執行if語句下一行縮進部分的語句;如果條件為假,則忽略if語句下一行縮進部分的語句,去執行elif語句。接著會判斷elif語句中的條件真假,如果條件為真,就執行elif語句下一行縮進部分的語句;如果條件為假,則忽略elif語句下一行縮進部分的語句,去執行else語句及下一行縮進部分的語句。

案例8:哪些人能走老年通道

如下所示為用if-elif-else語句判斷是否能走老年通道。

01行代碼作用是新建一個變量“age”,并將用戶輸入的值賦給變量“age”。

02~09行代碼作用是為if-elif-else語句。程序執行時,Python會按照先后順序進行判斷,若當前條件(if的條件或者是elif的條件)為真時,執行對應縮進部分的代碼,并且后面還未執行的條件判斷都跳過,不再執行了。若當前條件為假,則跳到下一個條件進行判斷。

上述代碼運行結果如下(輸入61)。

上述代碼運行結果如下(輸入12)。

上述if-elif-else程序是如何執行的呢?

1)首先在屏幕上打印“請輸入您的年齡:”,然后等待。

2)當用戶輸入“61”后,將“61”轉換為整型,然后賦給變量“age”,這時變量的值為61。

3)執行if語句,先檢測“age>=60”是真是假。由于61>60,因此條件為真。Python開始執行下一行縮進部分的語句,打印輸出“請您走老年人通道”。

4)忽略所有elif語句及else語句,結束程序。

5)再次運行程序,在屏幕上打印“請輸入您的年齡:”,然后等待。

6)當用戶輸入“12”后,將“12”轉換為整型,然后賦給變量“age”,這時變量的值為12。

7)執行if語句,先檢測“age>=60”是真是假。由于12<60,因此條件為假。Python忽略下一行縮進部分的語句,然后執行第一個elif語句。

8)檢測“60>age>=18”是真是假。由于12<18,因此條件為假。Python忽略下一行縮進部分的語句,然后執行第二個elif語句。

9)檢測“18>age>=7”是真是假。由于18>12>7,因此條件為真。Python開始執行下一行縮進部分的語句,打印輸出“請您走青少年通道”,并忽略else語句,結束程序。

注意:

if-elif語句中只要有一個if語句的條件成立,就會跳過檢測其他的elif語句。因此只適合只有一個選項的情況。

4.if語句的嵌套

前面介紹了3種形式的if條件語句,這3種形式的條件語句之間都可以相互嵌套。在最簡單的if語句中嵌套if-else語句,形式如下。

在if-else語句中嵌套if-else語句,形式如下。

2.6.2 for循環

1.for循環

for循環簡單來說是使用一個變量來遍歷列表中的每一個元素,就好比讓一個小朋友依次走過列表中的元素一樣。

for循環可以遍歷任何序列的項目,如一個列表或者一個字符串。它常用于遍歷字符串、列表、元組、字典、集合等序列類型,逐個獲取序列中的各個元素,并存儲在變量中。

在使用for循環遍歷列表和元組時,列表或元組有幾個元素,for循環的循環體就執行幾次,針對每個元素執行一次,迭代變量會依次被賦值為元素的值。

for循環中包括for...in和冒號(:),其用法如下所示。

上述代碼中,names為一個列表(列表的相關知識參考下一節內容),第二、三行代碼為一個for循環語句,name為一個新建的變量,開始循環時,從列表names中取出一個元素,并存儲在變量name中,然后print語句將元素打印出來。接著第二次循環,再從列表names中取出第二個元素,存儲在變量name中,并打印出來;這樣一直重復執行,直到列表中的元素全部被打印出來。

代碼運行結果如下所示。

注意:

上述代碼中的冒號(:)不能丟。另外,“print(name)”語句必須縮進4個字節才會參與循環。如果忘記縮進,運行程序時,將會出錯,Python將會提醒用戶縮進。

2.for循環的好搭檔——range()函數

range()函數是Python內置的函數,用于生成一系列連續的整數,多與for循環配合使用。如下所示為range()函數的用法。

上述代碼中,range(1,6)函數參數中的第一個數字1為起始數,第二個數字為結束數,但不包括此數。因此就生成了從1到5的數字。

代碼運行結果如下。

如下所示為修改range()函數參數后的程序。

上述代碼中,range(1,6,2)函數參數中的第一個數字1為起始數,第二個數字為結束數(不包括此數),第三個數為步長,即兩個數之間的間隔。因此就生成了1,3,5的奇數。

代碼運行結果如下。

如下所示為range()函數只有一個參數的程序。

上述代碼中,range(10)函數參數中,如果只有一個數,表示指定的是結束數,第一個數默認從0開始。因此就生成了0到9的數字。

3.遍歷字符串

使用for循環除了可以循環數值、列表外,還可以逐個遍歷字符串,如下所示為for循環遍歷字符串。

上述代碼運行后結果如下所示。

案例9:用for循環畫螺旋線

在IDLE中創建一個名為“螺旋線.py”的文件,然后在文件中導入turtle模塊,接著用for循環遍歷range生成的整數列表,在每次循環時,讓畫筆畫線段并旋轉畫筆,即可實現畫螺旋線。代碼如下。

運行結果如下。

2.6.3 while循環

for循環主要針對集合中的每個元素(即遍歷)。接下來要講的while循環則是只要指定的條件滿足,就不斷地循環,直到指定的條件不滿足為止。

while循環中包括while、條件表達式和冒號(:)。條件表達式是循環執行的條件,每次循環執行前,都要執行條件表達式,對條件進行判斷。如果條件成立(即條件為真時)就執行循環體(循環體為冒號后面縮進的語句),否則退出循環;如果條件表達式在循環開始時就不成立(即條件為假),則不執行循環語句,直接退出循環。

while循環的用法如下所示。

第1行代碼中的n為新建的變量,并將1賦給n。第2~4行代碼為while循環語句,語句中“while”與“:”(冒號)之間的部分為循環中的條件表達式(即這里的“n<10”為條件表達式)。當程序執行時,Python會不斷地判斷while循環中的條件表達式是否成立(即是否為真)。如果條件表達式成立,就會執行下面縮進部分的代碼(即打印n,然后將n加1)。之后又重復以上執行while循環,重新判斷條件表達式是否成立。就這樣一直循環,直到條件表達式不成立時,停止循環,開始執行while循環下面的代碼“print('結束')”代碼。

注意:

while及下面縮進部分語句都為while循環的組成部分。注意:別丟掉冒號(:)。

代碼運行結果如下。

上面程序是如何執行的呢?

首先Python新建一個變量n,并將1賦給n,接著執行while循環。

第1次循環:先判斷條件表達式n<10是否成立。由于1<10,條件表達式成立,因此執行冒號下面縮進部分的代碼。先執行print(n)語句,打印輸出1,再執行n=n+1(即n=1+1),這時n的值就變成了2。

第2次循環:接下來重復執行while循環,判斷條件表達式n<10是否成立。由于2<10,條件表達式成立,接著執行循環體中縮進部分的代碼。先執行print(n)語句,打印輸出2,再執行n=n+1(即n=2+1),這時n的值就變成了3。

第10次循環:就這樣一直循環,直到第10次循環時,這時n的值為10,條件表達式變成了10<10,條件表達式不成立了。這時Python停止執行循環部分的代碼,開始執行下面的代碼,即執行“print('結束')”代碼,打印輸出“結束”。程序運行結束。

提示:如果while循環中的條件表達式是“True”(第一個字母必須大寫),那么while循環將會一直循環。

案例10:輸入登錄密碼

在IDLE中創建一個名為“輸密碼.py”的文件,然后在文件中定義兩個變量,并賦值0和True,然后用while循環讓用戶循環輸入密碼,直到輸入正確的密碼結束輸入,代碼如下。

運行結果如下。

2.6.4 break語句

如果想從while循環或for循環中,立即退出,不再運行循環中余下的代碼,也不管條件表達式是否成立,可以使用break語句。break語句用于控制程序的流程,可使用它來控制哪些代碼將執行,哪些代碼不執行,從而讓Python執行想要執行的代碼。

break語句的用法如下所示。

代碼中while及下面縮進部分語句都為while循環語句。while循環中嵌套了if條件語句。這兩句為if條件語句,來檢測n是否大于5,如果n大于5就執行break語句,退出循環。

代碼運行結果如下。

上面程序是如何執行的呢?首先Python新建一個變量n,并將1賦給n,接著執行while循環。

第1次循環:先判斷條件表達式n<10是否成立。由于1<10,條件表達式成立,因此執行冒號下面縮進部分的代碼。先執行“if n>5”語句,判斷n>5是真還是假,由于“1>5”不成立,因此if條件測試的值為假,Python程序會忽略if語句中縮進部分的語句(即忽略break語句)。接著執行print(n)語句,打印輸出1,再執行n=n+1(即n=1+1),這時n的值就變成了2。

第2次循環:接下來重復執行while循環,判斷條件表達式n<10是否成立。由于2<10,條件表達式成立,接著執行循環體中縮進部分的代碼。先執行“if n>5”語句,由于“2>5”不成立,因此if條件測試的值為假,Python程序會忽略break語句。接著執行print(n)語句,打印輸出2,再執行n=n+1(即n=2+1),這時n的值就變成了3。

第6次循環:就這樣一直循環,直到第6次循環時,n的值為6,while循環中的條件表達式變成了6<10,條件表達式成立。接著執行循環體中“if n>5”語句,由于“6>5”成立,因此if條件測試的值為真,之后Python程序執行break語句,退出while循環。執行下面的代碼,即執行“print('結束')”代碼,打印輸出“結束”。程序運行結束。

注意:

在任何Python循環中都可以使用break語句來退出循環。

案例11:輸入登錄密碼(break版)

在IDLE中創建一個名為“輸密碼.py”的文件,然后在文件中定義兩個變量,并賦值0和True,然后用while循環讓用戶循環輸入密碼,直到輸入正確的密碼結束輸入,代碼如下。

運行結果如下。

2.6.5 continue語句

在循環過程中,也可以通過continue語句跳過當前的這次循環,直接開始下一次循環。即continue語句可以返回到循環開頭,重新執行循環,進行條件測試。

continue語句的使用方法如下所示。

代碼中while及下面縮進部分語句都為while循環語句。循環中嵌套了if條件語句。這兩句為if條件語句,來檢測n除以2的余數是否等于0(即判斷是否為偶數)如果求余的結果等于0,就執行continue語句,跳到while循環開頭,開始下一次循環。

代碼運行結果如下。

上面程序是如何執行的呢?首先Python新建一個變量n,并將0賦給n,接著執行while循環。

第1次循環:先判斷條件表達式n<10是否成立。由于0<10,條件表達式成立,因此執行冒號下面縮進部分的代碼。先執行“n=n+1”語句,n就變成了1;接著執行“if n%2==0”語句,判斷n除以2的余數是否等于0(即判斷n是否為偶數)。由于這時n的值變成了1,而1除以2的余數為1,if條件測試的值為假,Python程序會忽略if語句中縮進部分的語句(即忽略continue語句),接著執行print(n)語句,打印輸出1。

第2次循環:接下來重復執行while循環,判斷條件表達式n<10是否成立。由于1<10,條件表達式成立,接著執行循環體中縮進部分的代碼。先執行“n=n+1”語句,n的值為1+1=2;接著執行“if n%2==0”語句,判斷n除以2的余數是否等于0。由于2除以2的余數為0,if條件測試的值為真,Python程序執行continue語句,返回到while循環開頭,重新開始循環。

第3次循環:判斷條件表達式n<10是否成立。由于2<10,條件表達式成立,因此執行冒號下面縮進部分的代碼。先執行“n=n+1”語句,n的值為2+1=3;接著執行“if n%2==0”語句,判斷n除以2的余數是否等于0。由于3除以2的余數為1,if條件測試的值為假,Python程序會忽略if語句中縮進部分的語句(即忽略continue語句)。接著執行print(n)語句,打印輸出3。

第11次循環:就這樣一直循環,直到第11次循環時,n的值為10,條件表達式變成了10<10,條件表達式不成立了。這時Python停止執行循環部分的代碼,程序運行結束。

案例12:10086查詢系統

在IDLE中創建一個名為“10086查詢.py”的文件,然后在文件中定義none變量,并賦值True,然后用while循環實現無限循環,讓用戶輸入要查詢的代碼,之后判斷用戶輸入的代碼,并輸出相應的值,代碼如下。

運行結果如下。

主站蜘蛛池模板: 鄂尔多斯市| 双桥区| 麻阳| 高碑店市| 清水县| 潮安县| 海门市| 游戏| 蕉岭县| 繁峙县| 新丰县| 固安县| 潜江市| 皮山县| 师宗县| 大同县| 洪雅县| 新绛县| 石首市| 墨竹工卡县| 浙江省| 齐河县| 内江市| 金沙县| 池州市| 田东县| 六盘水市| 木里| 山阴县| 阿巴嘎旗| 常熟市| 连城县| 平阳县| 嘉兴市| 武邑县| 台北市| 汨罗市| 桦南县| 三原县| 南开区| 堆龙德庆县|