Python程序設(shè)計(jì)基礎(chǔ) (微課版)-課件 第4章:程序控制結(jié)構(gòu)_第1頁
Python程序設(shè)計(jì)基礎(chǔ) (微課版)-課件 第4章:程序控制結(jié)構(gòu)_第2頁
Python程序設(shè)計(jì)基礎(chǔ) (微課版)-課件 第4章:程序控制結(jié)構(gòu)_第3頁
Python程序設(shè)計(jì)基礎(chǔ) (微課版)-課件 第4章:程序控制結(jié)構(gòu)_第4頁
Python程序設(shè)計(jì)基礎(chǔ) (微課版)-課件 第4章:程序控制結(jié)構(gòu)_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Python語句選擇結(jié)構(gòu)NumPy模塊與科學(xué)計(jì)算《Python程序設(shè)計(jì)基礎(chǔ)(微課版)》程序控制結(jié)構(gòu)知識目標(biāo)理解程序控制結(jié)構(gòu)基礎(chǔ)掌握選擇結(jié)構(gòu)語法掌握循環(huán)結(jié)構(gòu)語法掌握常用算法思想通過本章的學(xué)習(xí),讀者將掌握Python程序控制的核心語法,并能夠使用NumPy進(jìn)行高效的科學(xué)計(jì)算。能力目標(biāo)能準(zhǔn)確分析程序執(zhí)行邏輯能根據(jù)實(shí)際需求選擇合適的選擇結(jié)構(gòu)解決問題知識與能力目標(biāo)能使用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)常見算法(累加、累乘、計(jì)數(shù)、查找)能根據(jù)問題需求設(shè)計(jì)合理的嵌套結(jié)構(gòu)程序,能正確處理嵌套結(jié)構(gòu)中變量作用域問題,避免變量沖突,確保程序邏輯清晰、運(yùn)行正確。掌握Numpy基礎(chǔ)并熟練運(yùn)用Numpy科學(xué)計(jì)算功能能根據(jù)實(shí)際問題特點(diǎn)選擇合適的算法思想(窮舉、迭代、遞歸)設(shè)計(jì)解決方案;能將算法思想轉(zhuǎn)化為Python程序代碼,提升問題解決能力與編程思維。能將Numpy與程序控制結(jié)構(gòu)結(jié)合,實(shí)現(xiàn)復(fù)雜的科學(xué)計(jì)算任務(wù)選擇結(jié)構(gòu)選擇結(jié)構(gòu)適用于處理多種情況、篩選數(shù)據(jù)和控制程序邏輯。選擇結(jié)構(gòu)常用格式:單分支、雙分支、多分支,各種分支結(jié)構(gòu)之間還可以互相嵌套使用。單分支結(jié)構(gòu)在Python中使用if語句實(shí)現(xiàn),只處理?xiàng)l件成立的情況

若條件不成立則跳過語句塊雙分支結(jié)構(gòu)在Python中使用if...else語句實(shí)現(xiàn),同時處理?xiàng)l件成立與不成立的情況。

兩個分支互斥,只執(zhí)行其中一個多分支結(jié)構(gòu)在Python中使用if...elif...else語句實(shí)現(xiàn),處理多種不同條件的情況。

多個條件按順序判斷,只執(zhí)行第一個滿足條件的分支單分支選擇結(jié)構(gòu)語法結(jié)構(gòu)if表達(dá)式:

語句塊ifx<100:print("OK")執(zhí)行過程:首先計(jì)算表達(dá)式的值,如果表達(dá)式的結(jié)果為True,則執(zhí)行語句塊;否則跳過語句塊,繼續(xù)執(zhí)行其后的其他語句。注意表達(dá)式可以是關(guān)系表達(dá)式、邏輯表達(dá)式,也可以是各種類型的數(shù)據(jù)。表達(dá)式后面的冒號(:)不能省略,可以為表達(dá)式添加括號。當(dāng)語句塊只有一條語句時,可寫在同一行。如果語句塊有多條語句,則按先后順序執(zhí)行。Python通過嚴(yán)格的縮進(jìn)來決定語句的層次,同一層次的語句塊必須有相同的縮進(jìn)。單分支選擇結(jié)構(gòu)程序示例1a=eval(input("請輸入實(shí)數(shù)a:"))2b=eval(input("請輸入實(shí)數(shù)b:"))3ifa<b:4max=b5ifa>=b:6max=a7print("a、b中的較大值為:{}".format(max))【例4-1】從鍵盤輸入兩個實(shí)數(shù),然后輸出較大者?!痉治觥砍绦虬匆韵?步執(zhí)行。步驟1輸入兩個數(shù)a和b。步驟2如果a小于b,則較大者max=b。步驟3如果a大于等于b,則較大者max=a。步驟4輸出max的值。為了分析代碼的方便,在每行代碼前加上了序號,實(shí)際代碼中沒有前面的序號程序的運(yùn)行結(jié)果如下:請輸入實(shí)數(shù)a:22↙請輸入實(shí)數(shù)b:12↙a、b中的較大值為:22雙分支選擇結(jié)構(gòu)語法結(jié)構(gòu)if表達(dá)式:

語句塊1else:

語句塊2ifx<100:print("YES")else:print("NO")執(zhí)行過程:首先計(jì)算表達(dá)式的值,如果表達(dá)式的結(jié)果為True,則執(zhí)行語句塊1中的所有語句;否則,執(zhí)行語句塊2中的所有語句。注意表達(dá)式和else后面的冒號(:)不能省略,而且else必須與if對齊。語句塊1和語句塊2必須有相同的縮進(jìn)。雙分支選擇結(jié)構(gòu)程序示例1a=eval(input("請輸入實(shí)數(shù)a:"))2b=eval(input("請輸入實(shí)數(shù)b:"))3ifa<b:4max=b5else:6max=a7print("a、b中的較大值為:{}".format(max))【例4-2】雙分支選擇結(jié)構(gòu)更方便地表達(dá)兩種不同的選擇。請把例4-1中的兩條單分支選擇結(jié)構(gòu)改寫成雙分支選擇結(jié)構(gòu)?!痉治觥勘容^變量a和b的大小,如果a小于b,則較大值max=b;否則,較大值max=a。為了分析代碼的方便,在每行代碼前加上了序號,實(shí)際代碼中沒有前面的序號程序的運(yùn)行結(jié)果如下:請輸入實(shí)數(shù)a:22↙請輸入實(shí)數(shù)b:12↙a、b中的較大值為:22if(a<b):max=belse:max=a注意:第3~6行的if雙分支結(jié)構(gòu)也可以寫成如下形式:max=bifa<belsea寫成三元運(yùn)算符形式:多分支選擇結(jié)構(gòu)語法結(jié)構(gòu)if表達(dá)式1:

語句塊1elif表達(dá)式2:

語句塊2…elif表達(dá)式N:

語句塊N[else:

語句塊N+1]day=3ifday==1:print("星期一")elifday==2:print("星期二")elifday==3:print("星期三")else:print("其他日期")執(zhí)行過程:系統(tǒng)首先計(jì)算表達(dá)式1的值,若結(jié)果為True,則執(zhí)行語句塊1;否則計(jì)算表達(dá)式2的值,若結(jié)果為True,則執(zhí)行語句塊2;以此類推。只要執(zhí)行了一個分支,就不會再執(zhí)行其他的分支,結(jié)束if選擇結(jié)構(gòu)。若表達(dá)式1至表達(dá)式N的計(jì)算結(jié)果都為False,則執(zhí)行else部分的語句塊N+1。注意elif是“elseif”的縮寫,elif子句可以有1~n個。表達(dá)式、else后面的冒號(:)不能省略,關(guān)鍵字if、elif、else的縮進(jìn)相同。語句塊1和語句塊2必須有相同的縮進(jìn)。else分支可以省略。多分支選擇結(jié)構(gòu)程序示例1importmath2a=eval(input("請輸入一元二次方程的系數(shù)a:"))3b=eval(input("請輸入一元二次方程的系數(shù)b:"))4c=eval(input("請輸入一元二次方程的系數(shù)c:"))5d=b*b-4*a*c6ifd>0:7x1=(-b+math.sqrt(d))/(2*a)8x2=(-b-math.sqrt(d))/(2*a)9print("方程有兩個不同的實(shí)根:{:f}、{:f}".format(x1,x2))10elifd==0:11x=-b/(2*a)12print("方程有一個實(shí)根:{}".format(x))13else:14print("方程無實(shí)根")【例4-3】編程計(jì)算一元二次方程ax2+bx+c=0的根。已知判別式d=b2-4ac,如果d>0,則有兩個不同的實(shí)根,如果d=0,則有一個實(shí)根;如果d<0,則無實(shí)根?!痉治觥坑?種不同的情況,使用if多分支結(jié)構(gòu)表達(dá)。為了分析代碼的方便,在每行代碼前加上了序號,實(shí)際代碼中沒有前面的序號程序的運(yùn)行結(jié)果如下:請輸入一元二次方程的系數(shù)a:1↙請輸入一元二次方程的系數(shù)b:2↙請輸入一元二次方程的系數(shù)c:1↙方程有一個實(shí)根:-1.0請輸入一元二次方程的系數(shù)a:2↙請輸入一元二次方程的系數(shù)b:4↙請輸入一元二次方程的系數(shù)c:1↙方程有兩個不同的實(shí)根:-0.292893、-1.707107請輸入一元二次方程的系數(shù)a:7↙請輸入一元二次方程的系數(shù)b:2↙請輸入一元二次方程的系數(shù)c:3↙方程無實(shí)根選擇結(jié)構(gòu)嵌套語法結(jié)構(gòu)if表達(dá)式1:if表達(dá)式2:

語句塊1else:

語句塊2num=10ifnum>0:#單分支選擇結(jié)構(gòu)ifnum%2==0:#嵌套的雙分支選擇結(jié)構(gòu)print("正偶數(shù)")else:print("正奇數(shù)")else:print("非正數(shù)")在單分支選擇結(jié)構(gòu)中,嵌套了另外一個雙分支選擇結(jié)構(gòu)。if表達(dá)式1:if表達(dá)式2:

語句塊1else:

語句塊2num=10ifnum>0:#單分支選擇結(jié)構(gòu)ifnum%2==0:#嵌套的雙分支選擇結(jié)構(gòu)print("正偶數(shù)")else:print("正奇數(shù)")else:print("非正數(shù)")在單分支選擇結(jié)構(gòu)中,嵌套了另外一個雙分支選擇結(jié)構(gòu)。if表達(dá)式1:if表達(dá)式2:

語句塊1else:

語句塊2else:if表達(dá)式3:

語句塊3else:

語句塊4score=85ifscore>=60:#外層雙分支的if部分ifscore>=90:#內(nèi)層嵌套的雙分支print("優(yōu)秀")else:print("及格")else:#外層雙分支的else部分ifscore>=30:#內(nèi)層嵌套的雙分支print("不及格但可補(bǔ)考")else:print("不及格需重修")在外層雙分支選擇結(jié)構(gòu)中,if分支和else分支中分別又嵌套了另外一個雙分支選擇結(jié)構(gòu)。多分支選擇結(jié)構(gòu)程序示例1year=eval(input("請輸入年份:"))2iftype(year)!=intoryear<1:3print("您輸入的不是有效的年份!")4else:5if(year%4==0andyear%100!=0)oryear%400==0:6print("%d是閏年!"%year)7else:8print("%d不是閏年!"%year)【例4-4】從鍵盤任意輸入一個公元年份(大于等于1),判斷它是否是閏年。要求對輸入的數(shù)據(jù)進(jìn)行合法性判斷。已知符合下列條件之一者是閏年。(1)能被4整除,但不能被100整除。(2)能被400整除。為了分析代碼的方便,在每行代碼前加上了序號,實(shí)際代碼中沒有前面的序號程序的運(yùn)行結(jié)果如下:請輸入年份:2020↙2020是閏年!請輸入年份:90.4↙您輸入的不是有效的年份!循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是Python編程中用于重復(fù)執(zhí)行代碼塊的控制流程,簡化了處理重復(fù)任務(wù)的復(fù)雜性。while循環(huán)語句while循環(huán)語句按條件重復(fù)執(zhí)行某些語句(循環(huán)體)for循環(huán)語句

for循環(huán)主要應(yīng)用于循環(huán)次數(shù)確定的場合,特別適合于遍歷可迭代對象中的元素。

選擇結(jié)構(gòu)常用格式:while循環(huán)語句和for循環(huán)語句while循環(huán)語句語法結(jié)構(gòu)while表達(dá)式:

循環(huán)體i=1whilei<3:i=i+1執(zhí)行過程:先計(jì)算表達(dá)式的值,如果為True,則執(zhí)行一次循環(huán)體;反復(fù)進(jìn)行直到表達(dá)式為False,不再執(zhí)行循環(huán)體內(nèi)的語句,循環(huán)結(jié)束。注意表達(dá)式可以是關(guān)系表達(dá)式、邏輯表達(dá)式或數(shù)學(xué)表達(dá)式等表達(dá)式后面的冒號(:)不能省略。表達(dá)式可加括號。循環(huán)體可以是單條語句,也可以是多條語句,多條語句應(yīng)有相同的縮進(jìn)。為了避免“死循環(huán)”,循環(huán)體中應(yīng)包含改變循環(huán)條件的語句,以使循環(huán)趨于結(jié)束,或者循環(huán)體中有強(qiáng)行退出循環(huán)的語句(如break語句)。while循環(huán)語句程序示例1n=12sum=03whilen<=100:4sum=sum+n5n=n+16print("1+2+3+…+99+100={}".format(sum))【例4-8】利用while循環(huán)求1+2+3+…+99+100。【分析】使用累加求和算法。步驟1設(shè)置循環(huán)初值:

累加和sum初值為0;累加數(shù)n初值為1。步驟2設(shè)置循環(huán)條件:累加到100,故循環(huán)條件設(shè)為“n<=100”。步驟3編寫循環(huán)體語句:把循環(huán)變量n的值加入累加和sum中,即“sum=sum+n”;

循環(huán)變量n遞增,即“n=n+1”,進(jìn)入下次循環(huán)。步驟4循環(huán)結(jié)束輸出和:當(dāng)n=101時,循環(huán)結(jié)束,輸出sum的值。為了分析代碼的方便,在每行代碼前加上了序號,實(shí)際代碼中沒有前面的序號程序的運(yùn)行結(jié)果如下:1+2+3+…+99+100=5050for循環(huán)語句語法結(jié)構(gòu)for循環(huán)變量in可迭代對象:循環(huán)體執(zhí)行過程:依次取出可迭代對象的元素存放在“循環(huán)變量”中,并執(zhí)行循環(huán)體;遍歷完可迭代對象中的所有元素,循環(huán)結(jié)束。注意常見的可迭代對象有字符串、列表、元組、字典、集合等序列類型。系統(tǒng)自動一個接一個地讀取可迭代對象中的元素,并賦值給循環(huán)變量。循環(huán)體內(nèi)不需要修改循環(huán)變量值的語句,比while循環(huán)更簡潔。循環(huán)體可以是單條語句,也可以是多條語句,多條語句應(yīng)有相同的縮進(jìn)。內(nèi)置函數(shù)range()可創(chuàng)建數(shù)值型可迭代對象。my_list=[1,2,3,4,5]foriinmy_list:print(i,end='*')for循環(huán)語句程序示例1n=int(input("計(jì)算n!,請先輸入n的值:"))2t=13foriinrange(1,n+1):4t=t*i5print("%d!=%d"%(n,t))【例4-11】編程求n!=1×2×3×…×n的值?!痉治觥窟B乘求積算法可求解典型的多個數(shù)相乘的問題。步驟1設(shè)置初值:變量n從鍵盤輸入,變量t存放連乘結(jié)果,初值為1。步驟2設(shè)置循環(huán)變量的范圍:使用range()函數(shù)返回自然數(shù)序列。步驟3編寫循環(huán)體語句:上次連乘結(jié)果t與本次循環(huán)變量i的值相乘,重新賦值給變量t。步驟4輸出階乘:退出循環(huán),變量t的值即是n的階乘。輸出t。為了分析代碼的方便,在每行代碼前加上了序號,實(shí)際代碼中沒有前面的序號程序的運(yùn)行結(jié)果如下:計(jì)算n!,請先輸入n的值:5↙5!=120continue與break語句如果希望跳過某次循環(huán)體的語句,或者提前結(jié)束循環(huán),就需要用到控制轉(zhuǎn)移語句continue、break。break語句

作用:結(jié)束循環(huán),跳出整個循環(huán)結(jié)構(gòu)在嵌套循環(huán)中使用時,會停止最深層次循環(huán),執(zhí)行后續(xù)程序continue語句作用:跳出本次循環(huán),開始下一輪循環(huán)在while循環(huán)中:跳轉(zhuǎn)至循環(huán)條件并判斷在for循環(huán)中:將下一個元素賦給循環(huán)變量后判斷對比與區(qū)別語句功能對循環(huán)的影響使用場景break結(jié)束循環(huán)完全跳出循環(huán)結(jié)構(gòu)當(dāng)找到目標(biāo)或滿足退出條件時continue跳過當(dāng)前循環(huán)開始下一輪循環(huán)跳過不需要處理的情況i=1whilei<10:i=i+1ifi%2==0:continue#跳過當(dāng)前循環(huán)print(i,end='')i=1whilei<10:i=i+1ifi%3==0:break#完全跳出循環(huán)print(i)else子句語法結(jié)構(gòu)while表達(dá)式:

循環(huán)體語句塊1else:

語句塊2city=['Beijing','Shanghai','Shenzhen']forcincity:print(c)else:print("中國一線城市!")當(dāng)循環(huán)正常退出時執(zhí)行else子句for變量in可迭代對象

循環(huán)體語句塊1else:

語句塊2city=['Beijing','Shanghai','Shenzhen']forcincity:if'S'inc:breakprint(c)else:print("中國一線城市!")BeijingShanghaiShenzhen中國一線城市!程序的運(yùn)行結(jié)果如下:Beijing程序的運(yùn)行結(jié)果如下:在循環(huán)中嵌套循環(huán)可以實(shí)現(xiàn)更加復(fù)雜的邏輯結(jié)構(gòu)。while循環(huán)嵌套

應(yīng)用場景:適用于需要在一個條件循環(huán)內(nèi)基于另一個條件進(jìn)行循環(huán)處理的情況,如二維數(shù)據(jù)處理。for循環(huán)嵌套應(yīng)用場景:適用于需要遍歷多維數(shù)據(jù)結(jié)構(gòu),如矩陣處理、多層嵌套結(jié)構(gòu)遍歷等場景。循環(huán)嵌套能夠?qū)崿F(xiàn)更復(fù)雜的邏輯結(jié)構(gòu),但需要注意控制循環(huán)層次,避免過度嵌套導(dǎo)致性能問題外層while循環(huán)

語句塊1語句塊3語句塊2內(nèi)層while/for循環(huán)外層for循環(huán)

語句塊1語句塊3語句塊2循環(huán)嵌套內(nèi)層while/for循環(huán)循環(huán)嵌套程序示例1num=02forninrange(101,200,2):3foriin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論