




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章流程控制5.4break和continue語句5.2選擇結(jié)構(gòu)5.3循環(huán)結(jié)構(gòu)5.1條件表達(dá)式5.5案例實(shí)戰(zhàn)前面章節(jié)已經(jīng)學(xué)習(xí)了Python的基本語法和內(nèi)置的數(shù)據(jù)結(jié)構(gòu),本章學(xué)習(xí)Python常用的流程控制語句。程序流程控制語句是程序設(shè)計(jì)語言的基礎(chǔ),是編程的重點(diǎn)。Python通過選擇語句if、if…else、if…elif…else和循環(huán)語句while、for等來實(shí)現(xiàn)程序的流程控制功能。5.1條件表達(dá)式5.1條件表達(dá)式在選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中,常常需要對(duì)條件表達(dá)式的值進(jìn)行判斷來確定下一步的執(zhí)行流程。在Python中,條件表達(dá)式的構(gòu)成要比其它語言靈活得多,單個(gè)常量、變量或者任意合法表達(dá)式(包括函數(shù)調(diào)用表達(dá)式)都可以作為條件表達(dá)式。5.1條件表達(dá)式條件表達(dá)式中可以使用算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符和矩陣相乘運(yùn)算符等條件表達(dá)式的值為False的情況False、0(0.0、0j)、None、空列表、空元組、空集合、空字典、空字符串、空range;對(duì)象或其它空迭代對(duì)象,Python解釋器均認(rèn)為等價(jià)于False。條件表達(dá)式的值為True的情況條件表達(dá)式的值只要不是False,Python均認(rèn)為與True等價(jià)。Python不同于其它語言,條件表達(dá)式中不能使用賦值運(yùn)算符“=”,否則會(huì)拋出異常。5.2選擇結(jié)構(gòu)5.2選擇結(jié)構(gòu)-單分支選擇結(jié)構(gòu)單分支選擇結(jié)構(gòu)是最簡(jiǎn)單的一種形式。Python提供了if語句來支持單分支結(jié)構(gòu),其語法結(jié)構(gòu)如下所示:if條件表達(dá)式:
滿足條件時(shí)要執(zhí)行的語句塊注意:同一語句塊的所有語句縮進(jìn)相同。5.2選擇結(jié)構(gòu)-單分支選擇結(jié)構(gòu)代碼示例如下:math=65print('開始進(jìn)入if語句并判斷表達(dá)式的值是否為True')ifmath>=85: #條件表達(dá)式
print('數(shù)學(xué)成績(jī)優(yōu)秀') #if語句塊,滿足條件執(zhí)行,否則不執(zhí)行print('if語句運(yùn)行結(jié)束') #if語句結(jié)構(gòu)外語句5.2選擇結(jié)構(gòu)-雙分支選擇結(jié)構(gòu)單分支結(jié)可以決定條件為真時(shí)要做的事情,無法決定條件為假時(shí)如何做,這就需要使用雙分支選擇結(jié)構(gòu)的if…else語句。其語法結(jié)構(gòu)如下:if條件表達(dá)式:滿足條件時(shí)要執(zhí)行的語句塊1else:
不滿足條件時(shí)要執(zhí)行的語句25.2選擇結(jié)構(gòu)-雙分支選擇結(jié)構(gòu)代碼示例如下:day="正月初一"ifday==“年三十”:
#if語句條件表達(dá)式
print('今天是除夕') #if語句塊,滿足條件執(zhí)行else:
#if語句塊,不滿足條件執(zhí)行
print('過年了')print('可以拿壓歲錢了')5.2選擇結(jié)構(gòu)-多分支選擇結(jié)構(gòu)多分支結(jié)構(gòu)if…elif…else語句對(duì)if條件語句中的多個(gè)條件進(jìn)行判斷,然后執(zhí)行相應(yīng)的語句塊,其用法如下:if條件表達(dá)式1:
滿足條件1時(shí)要執(zhí)行的語句塊1elif條件表達(dá)式2:
滿足條件2時(shí)要執(zhí)行的語句塊2elif條件表達(dá)式3:
滿足條件3時(shí)要執(zhí)行的語句塊3else:
不滿足上述條件時(shí)執(zhí)行的語句塊45.2選擇結(jié)構(gòu)-多分支選擇結(jié)構(gòu)if…elif…else語句執(zhí)行流程如圖5.2選擇結(jié)構(gòu)-多分支選擇結(jié)構(gòu)示例如下:score=int(input("請(qǐng)輸入你的分?jǐn)?shù):")) ifscore>=90: print("你的等級(jí)是:A") elifscore>=80: print("你的等級(jí)是:B") elifscore>=60: print("你的等級(jí)是:C") elifscore>=40: print("你的等級(jí)是:D") elifscore>=0: print("你的等級(jí)是:E") else: print("祝賀你已經(jīng)完成成績(jī)分級(jí)。")5.2選擇結(jié)構(gòu)-選擇結(jié)構(gòu)的嵌套if嵌套就是在一個(gè)選擇結(jié)構(gòu)的語句塊中包含另一個(gè)選擇結(jié)構(gòu),其用法如下:if條件表達(dá)式1:
滿足條件1時(shí)要執(zhí)行的語句塊1 if條件表達(dá)式2:
滿足條件2時(shí)要執(zhí)行的語句塊塊2 else:
不滿足條件2時(shí)要執(zhí)行的語句塊3else:
不滿足條件1時(shí)要執(zhí)行的語句塊45.2選擇結(jié)構(gòu)-選擇結(jié)構(gòu)的嵌套message=["你的成績(jī)及格","你的成績(jī)中等","你的成績(jī)良好","你的成績(jī)優(yōu)秀","你的成績(jī)不及格"]score=int(input("請(qǐng)輸入你的分?jǐn)?shù):"))if0<=score<=100:
index=(score-60)//10
ifindex>=0:
print(message[index])
else:
print(message[-1])else:
print("錯(cuò)誤的成績(jī),成績(jī)必須在0和100之間")5.3循環(huán)結(jié)構(gòu)5.3循環(huán)結(jié)構(gòu)
Python循環(huán)控制結(jié)構(gòu)whileforwhile循環(huán)一般用于循環(huán)次數(shù)難以提前確定的情況,也可以用于循環(huán)次數(shù)確定的情況。for循環(huán)一般用于循環(huán)次數(shù)可以提前確定的情況,尤其是用于枚舉序列或迭代對(duì)象中的元素。一般優(yōu)先考慮使用for循環(huán)。相同或不同的循環(huán)結(jié)構(gòu)之間都可以互相嵌套,實(shí)現(xiàn)更為復(fù)雜的邏輯。5.3循環(huán)結(jié)構(gòu)
while循環(huán)和for循環(huán)的執(zhí)行流程如圖5.3循環(huán)結(jié)構(gòu)while循環(huán)常見用法:while條件表達(dá)式:循環(huán)體for循環(huán)常見用法:for<循環(huán)變量>in<可迭代對(duì)象或迭代器>:循環(huán)體5.3循環(huán)結(jié)構(gòu)else子句常見用法for...else語法形式如下:for<循環(huán)變量>in<可迭代對(duì)象或迭代器>:
循環(huán)體else:
代碼塊while...else語法形式如下:while條件表達(dá)式:
循環(huán)體else:
代碼塊5.3循環(huán)結(jié)構(gòu)循環(huán)簡(jiǎn)單代碼示例如下:count=0 #初始化循環(huán)控制變量whilecount<5: #條件表達(dá)式的值為True時(shí),執(zhí)行循環(huán)體
print(count,"islessthan5") #注意縮進(jìn)要一致
count+=1
#循環(huán)控制變量自增,避免死循環(huán)else: print(count,"isnotlessthan5") #表達(dá)式的值為False時(shí)執(zhí)行else語句塊5.3循環(huán)結(jié)構(gòu)循環(huán)簡(jiǎn)單代碼示例如下:name=[“XiJing”,“University”]
#定義一個(gè)列表forcinname:
#遍歷列表中的每一個(gè)元素
ifc=="XiJing": print("founded!")else: print(“Thesearchiscomplete”)
#遍歷完列表的元素后執(zhí)行print雞兔同籠問題。假設(shè)共有雞、兔30只,腳90只,求雞、兔各有多少只。forjiinrange(1,30):if2*ji+(30-ji)*4==90:print('ji:',ji,'tu:',30-ji)5.3循環(huán)結(jié)構(gòu)5.3循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)的優(yōu)化在編寫循環(huán)語句時(shí),應(yīng)該盡量減少循環(huán)內(nèi)部不必要的計(jì)算,將與循環(huán)變量無關(guān)的代碼盡可能放到循環(huán)體的外面。優(yōu)化前的代碼:digits=(1,2,3,4)result=[]foriinrange(1000):foriindigits:
forjindigits:
forkindigits:
result.append(i*100+j*10+k)#i,j,k各執(zhí)行執(zhí)行1000*4**3次5.3循環(huán)結(jié)構(gòu)5.3循環(huán)結(jié)構(gòu)優(yōu)化后的代碼:digits=(1,2,3,4)result=[]foriinrange(1000):foriindigits:
i=i*100 #i執(zhí)行1000*4次
forjindigits:
j=j*10 #j執(zhí)行1000*4**2次
forkindigits:
result.append(i+j+k) #k執(zhí)行1000*4**3次5.4break和continue語句5.4break和continue語句break和continue都是循環(huán)控制關(guān)鍵字,為循環(huán)結(jié)構(gòu)提供額外的控制break和continue可以與for和while循環(huán)搭配使用break和continue只能在循環(huán)中使用,不能單獨(dú)使用在嵌套循環(huán)中,break和continue只對(duì)最近的一層循環(huán)起作用5.4break和continue語句示例代碼:求i除以2的余數(shù),如果余數(shù)為0結(jié)束當(dāng)次循環(huán),繼續(xù)執(zhí)行后續(xù)循環(huán);如果余數(shù)不為0則打印i,并判斷如果i>=7就結(jié)束整個(gè)循環(huán),執(zhí)行循環(huán)后語句。foriinrange(10): ifi%2==0:
continue print(i,end=",") ifi>=7:
breakelse: #由于break會(huì)提前跳出循環(huán)體,所以else子句不會(huì)得以執(zhí)行
print("循環(huán)結(jié)束")
5.5案例實(shí)戰(zhàn)5.5案例實(shí)戰(zhàn)-案例描述編寫程序打印空心等邊三角形的程序。編寫程序打印九九乘法表的程序。編寫程序輸出50以內(nèi)的勾股數(shù),要求每行顯示6組,各勾股數(shù)無重復(fù)。5.5案例實(shí)戰(zhàn)-案例實(shí)現(xiàn)打印空心三角形:先定義一個(gè)變量rows記錄等邊三角形邊長(zhǎng),用循環(huán)嵌套和if-elif-else語句控制等邊三角形邊上點(diǎn)的位置。代碼如下:rows=int(input("輸入行數(shù):"))foriinrange(0,rows): #i控制每一行forkinrange(0,2*rows-1): #k控制每一行中的列數(shù)if(i!=rows-1)and(k==rows-i-1ork==rows+i-1):#控制每行打印*的位置
print("*",end="\t")elifi==rows-1: #最后一行
ifk%2==0: print("*",end="\t")else:print("",end="\t")else: #控制每行打印空格的位置
print("",end="\t")print("\n")5.5案例實(shí)戰(zhàn)-案例實(shí)現(xiàn)打印九九乘法表:使用兩層循環(huán)完成任務(wù),外層循環(huán)控制打印的行數(shù),內(nèi)層循環(huán)控制打印的列數(shù)和值。print("九九乘法表")i=1 #外層循環(huán)控制變量初始化foriinrange(1,10):j=1 #內(nèi)層循環(huán)控制變量初始化
forjinrange(1,i+1):print("%d*%d=%-2d"%(i,j,i*j),end='')j+=1print("\n")i+=15.5案例實(shí)戰(zhàn)-案例實(shí)現(xiàn)輸出50以內(nèi)的勾股數(shù):可以采用多種循環(huán)的窮
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高碑店假山的施工方案
- 碎石加工施工方案
- 總包與勞務(wù)分包消防協(xié)議
- 基坑爬梯施工方案
- 逆變一體機(jī)基礎(chǔ)施工方案
- 佛山歐式花園施工方案
- 上海倍發(fā)信息科技有限公司股東全部權(quán)益價(jià)值資產(chǎn)評(píng)估報(bào)告
- 建元信托2024年度審計(jì)報(bào)告及財(cái)務(wù)報(bào)表
- 浙江紡織電纜托架施工方案
- 澄海區(qū)中學(xué)初二數(shù)學(xué)試卷
- 臨時(shí)工雇傭合同范本2025年度
- (二調(diào))武漢市2025屆高中畢業(yè)生二月調(diào)研考試 地理試卷
- “艾梅乙”感染者消除醫(yī)療歧視制度-
- 2024-2025學(xué)年八年級(jí)地理下冊(cè)第七章《南方地區(qū)》檢測(cè)卷(人教版)
- 森林防火知識(shí)
- 2025年黑龍江林業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)帶答案
- 2025-2030年中國(guó)測(cè)序儀市場(chǎng)運(yùn)行態(tài)勢(shì)及發(fā)展規(guī)劃分析報(bào)告
- 第二單元第1課《精彩瞬間》第2課時(shí) 課件-七年級(jí)美術(shù)下冊(cè)(人教版2024)
- 《物理前沿科學(xué)》課件
- 2025年公共營(yíng)養(yǎng)師三級(jí)理論試題及答案
- 餐廳市場(chǎng)調(diào)研與定位
評(píng)論
0/150
提交評(píng)論