版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Python人工智能編程基礎(chǔ)項目五
循環(huán)與跳轉(zhuǎn)主講教師:XXX課前導(dǎo)入晚上,阿曹還在懷念下午跟朋友們玩猜數(shù)游戲的歡快時光。媽媽提示阿曹可以編寫一個Python程序來玩猜數(shù)游戲。于是,阿曹決定使用while循環(huán)來實(shí)現(xiàn)猜數(shù)的功能。經(jīng)過一番嘗試,阿曹完成了程序編寫,并且每次都可以根據(jù)程序的提示馬上猜中數(shù)字。阿曹感慨while循環(huán)真是一種強(qiáng)大的工具,可以實(shí)現(xiàn)重復(fù)的操作和條件判斷,從而解決實(shí)際問題。重難點(diǎn)重點(diǎn):難點(diǎn):for語句、while語句、break語句、continue語句跳轉(zhuǎn)語句、嵌套循環(huán)CONTENTSwhile語句for語句跳轉(zhuǎn)語句嵌套循環(huán)目錄CONTENTS01020304parTONEwhile語句01知識儲備:while語句的定義1Python中,while循環(huán)和if條件分支語句類似,即在條件(表達(dá)式)為True的情況下,會執(zhí)行相應(yīng)的語句塊。不同之處在于,只要條件為True,while語句就會一直重復(fù)執(zhí)行循環(huán)體語句塊。while語句的基本語法如下:while<條件>:語句塊語法表示:首先判斷條件表達(dá)式的值,如果條件表達(dá)式為True,則執(zhí)行語句塊中的語句序列。當(dāng)執(zhí)行完畢后,再重新判斷條件表達(dá)式的值是否為真,若仍為True,則繼續(xù)重新執(zhí)行語句塊...如此循環(huán),直到條件表達(dá)式的值為False,才終止循環(huán)。當(dāng)條件永為True時,while循環(huán)語句為無限循環(huán)。上述的語句塊,指的是縮進(jìn)格式相同的多行代碼,不過在循環(huán)結(jié)構(gòu)中,它又稱為循環(huán)體。知識儲備:while語句的應(yīng)用1循環(huán)語句主要是用于解決某些重復(fù)的代碼工作,使需要重復(fù)的代碼只寫一遍即可,下面通過實(shí)際案例說明。根據(jù)while循環(huán)語句計算1到100之和。sum=0i=1whilei<=100:sum+=ii+=1print("1到100的和為:",sum)運(yùn)行程序,輸出結(jié)果為:1到100的和為:5050左邊的代碼中,當(dāng)i≤100時,循環(huán)條件表達(dá)式一直為True,每次循環(huán)都會將循環(huán)變量i和總值sum相加并賦值給sum,循環(huán)變量i再自增1。當(dāng)i=101時循環(huán)條件表達(dá)式為False,終止循環(huán)。在循環(huán)結(jié)構(gòu)中同樣需要注意冒號和縮進(jìn),只要位于while循環(huán)體中的代碼,其必須使用相同的縮進(jìn)格式(通常縮進(jìn)4個空格),否則Python解釋器會報SyntaxError錯誤(語法錯誤)。例如,將上面程序中num+=1語句前移一個空格,再次執(zhí)行該程序,此時Python解釋器就會報SyntaxError錯誤。除此之外,while循環(huán)還常用來遍歷列表、元組和字符串,因為它們都支持通過下標(biāo)索引獲取指定位置的元素。任務(wù)實(shí)操——計算n的階乘1任務(wù)實(shí)操計算n的階乘實(shí)訓(xùn)【例5.1】編寫程序計算n的階乘?!?輸入:n(整數(shù))— 輸出:n的階乘— 例如:輸入5,輸出:n!=120任務(wù)實(shí)操——計算n的階乘實(shí)訓(xùn)1具體編程示例:n=eval(input("請輸入n的值:"))result=1whilen>1:result*=nn-=1print("n!={}".format(result))運(yùn)行程序,輸出結(jié)果為:請輸入需要n的值:5n!=120任務(wù)鞏固——計算1到n的奇數(shù)和1任務(wù)鞏固計算1到n的奇數(shù)和實(shí)訓(xùn)編寫程序計算1到n的奇數(shù)和?!?輸入:n(整數(shù))— 輸出:1到n的奇數(shù)和— 例如:輸入10,輸出:1到n的奇數(shù)和為:25輸出結(jié)果示例:請輸入n的值:101到n的奇數(shù)和為:25parTTWOfor語句02知識儲備:for循環(huán)語句語法格式2for循環(huán)是一種對序列進(jìn)行迭代的循環(huán)。循環(huán)變量遍歷序列中的每一個值。遍歷是指按照一定的順序訪問數(shù)據(jù)結(jié)構(gòu)中的每個元素,以便對每個元素執(zhí)行某些操作。遍歷通常用于對序列類型(如列表、元組、字符串等)進(jìn)行操作,例如對每個元素進(jìn)行計算、打印等操作。通過遍歷,我們可以逐個訪問序列中的元素,對每個元素執(zhí)行相同的代碼,從而簡化代碼并提高程序的效率。for循環(huán)語句的語法格式如下:for<循環(huán)變量>in<循環(huán)結(jié)構(gòu)>:<語句塊>循環(huán)變量用于存放從序列類型變量中讀取出來的元素,所以一般不會在循環(huán)中對迭代變量手動賦值。語句塊指的是具有相同縮進(jìn)格式的多行代碼(和while一樣),由于和循環(huán)結(jié)構(gòu)聯(lián)用,因此語句塊又稱為循環(huán)體。for語句的控制過程如圖5.1所示。圖5.1for語句的控制流程圖知識儲備:for循環(huán)的具體應(yīng)用2(1)計數(shù)循環(huán)在使用for循環(huán)時,最基本的應(yīng)用就是進(jìn)行計數(shù)循環(huán)。for計數(shù)循環(huán)的語法格式如下:foriinrange(M,N,K):<語句塊>M:表示計數(shù)起始位置。N:表示計數(shù)終止位置。K:表示步長。遍歷由range()函數(shù)產(chǎn)生的數(shù)字序列,產(chǎn)生循環(huán)。如果不設(shè)定計數(shù)范圍和步長,則只設(shè)定計數(shù)數(shù)值也可以(即:range(N))。(2)列表、元組和字符串遍歷循環(huán)列表、元組和字符串遍歷循環(huán)的語法格式如下:for<循環(huán)變量>in<循環(huán)結(jié)構(gòu)>:<語句塊>當(dāng)用for循環(huán)遍歷列表、元組或字符串時,其循環(huán)變量會先后被賦值為列表、元組中的每個元素或字符串的每個字符并執(zhí)行一次循環(huán)體。例如,編寫一個程序,實(shí)現(xiàn)輸入一個整數(shù)n,輸出1到n之間所有奇數(shù)的和,可以執(zhí)行如下代碼:n=int(input("請輸入一個整數(shù):"))total=0#保存累加結(jié)果的變量foriinrange(1,n+1,2):#逐個獲取1~n之間的奇數(shù)
total+=iprint("奇數(shù)之和為:{}".format(total))運(yùn)行程序,輸出結(jié)果為:請輸入一個整數(shù):10奇數(shù)之和為:25知識儲備:for循環(huán)的具體應(yīng)用2(3)字典遍歷循環(huán)在使用for循環(huán)遍歷字典時,經(jīng)常會用到和字典相關(guān)的3個函數(shù)
,即items()、keys()以及values(),它們各自的用法已經(jīng)在前面章節(jié)中講過,這里不再贅述。當(dāng)然,如果使用for循環(huán)直接遍歷字典,則循環(huán)變量會被先后賦值為每個鍵值對中的鍵。字典遍歷循環(huán)的語法格式如下:for<循環(huán)變量>in<字典變量>:<語句塊>具體示例如下所示:dict1={"浙江":"杭州","江西":"南昌","江蘇":"南京"}
foriindict1:
print(i,end=";")運(yùn)行程序,輸出結(jié)果為:浙江;江西;江蘇;除此之外,我們還可以遍歷字典values()、items()方法的返回值。例如:dict1={"浙江":"杭州","江西":"南昌","江蘇":"南京"}
foriindict1.items():
print(i,end=";")運(yùn)行程序,輸出結(jié)果為:('浙江','杭州');('江西','南昌');('江蘇','南京');任務(wù)實(shí)操——查詢閏年2任務(wù)實(shí)操查詢閏年實(shí)訓(xùn)【例5.2】編寫程序顯示21世紀(jì)(從2001年到2100年)里所有的閏年。要求:輸出每行顯示4個閏年,每個年份用“;”隔開。提示:采用for循環(huán),循環(huán)變量的取值范圍為2001~2101任務(wù)實(shí)操——查詢閏年實(shí)訓(xùn)2具體編程示例:count=0foriinrange(2001,2101):ifi%400==0ori%4==0andi%100!=0:#閏年判斷條件
print(i,end=";")count+=1ifcount%4==0:#每四個閏年輸出一行
print()運(yùn)行程序,輸出結(jié)果為:2004;2008;2012;2016;2020;2024;2028;2032;2036;2040;2044;2048;2052;2056;2060;2064;2068;2072;2076;2080;2084;2088;2092;2096;任務(wù)鞏固——數(shù)字篩選2任務(wù)鞏固數(shù)字篩選一個正整數(shù),如果它能被7整除,或者它的十進(jìn)制表示法中某一位的數(shù)字為7,則稱其為與7相關(guān)的數(shù)。編程輸出所有小于n(n<100)的與7無關(guān)的正整數(shù)。要求:輸出每行顯示7個數(shù)字,每個數(shù)字用“”隔開。提示:采用for循環(huán),循環(huán)體中結(jié)合條件判斷。輸出結(jié)果示例:100以內(nèi)與7無關(guān)的數(shù)字有:1234568910111213151618192022232425262930313233343638394041434445464850515253545558596061626465666869808182838586888990929394959699parTTHREE跳轉(zhuǎn)語句03Python語句中,無論是while循環(huán)還是for循環(huán),其后都可以緊跟著一個else代碼塊,它的作用是當(dāng)循環(huán)條件為False跳出循環(huán)時,程序會最先執(zhí)行else代碼塊中的代碼。以while循環(huán)為例,下面程序演示了如何為for循環(huán)添加一個else代碼塊:add="PYTHON"foriinadd:print(i,end="")else:print("\n執(zhí)行else代碼塊")運(yùn)行程序,輸出結(jié)果為:PYTHON執(zhí)行else代碼塊上面程序中,當(dāng)i==len(add)結(jié)束循環(huán)時,Python解釋器會執(zhí)行for循環(huán)后的else語句塊。知識儲備:循環(huán)結(jié)構(gòu)中else用法3在執(zhí)行while循環(huán)或者for循環(huán)時,只要循環(huán)條件滿足,程序?qū)恢眻?zhí)行循環(huán)體。但在某些場景,我們可能希望在循環(huán)結(jié)束前就強(qiáng)制結(jié)束循環(huán),Python語言提供了2種強(qiáng)制離開當(dāng)前循環(huán)體的辦法。break:跳出并結(jié)束當(dāng)前整個循環(huán),并執(zhí)行循環(huán)后的語句。continue:結(jié)束當(dāng)次循環(huán),繼續(xù)執(zhí)行后續(xù)次數(shù)循環(huán)。break和continue都可以與for和while循環(huán)搭配使用。下面通過實(shí)際案例說明:foriin"PYTHON":ifi=="T":breakprint(i,end="")運(yùn)行程序,輸出結(jié)果為:PY知識儲備:break語句的應(yīng)用3在上述程序中,首先是字符遍歷循環(huán),當(dāng)循環(huán)至字符串的"T"時,程序?qū)?zhí)行break語句,此時將終止當(dāng)前整個循環(huán)。因此,只輸出了"PY"字符”注意,通過前面的學(xué)習(xí)我們知道,for循環(huán)后也可以配備一個else語句。這種情況下,如果使用break語句跳出循環(huán)體,不會執(zhí)行else中包含的代碼。在Python語言中,和break語句相比,continue語句的作用則沒有那么強(qiáng)大,它只會終止執(zhí)行本次循環(huán)中剩下的代碼,直接從下一次循環(huán)繼續(xù)執(zhí)行。continue語句的用法和break語句一樣,只要while或for語句中的相應(yīng)位置加入即可。例如:foriin"PYTHON":ifi=="T":continueprint(i,end="")運(yùn)行程序,輸出結(jié)果為:PYHON可以看到,當(dāng)遍歷"PYTHON"字符串至"T"時,會進(jìn)入if判斷語句執(zhí)行print()語句和continue語句。其中,print()語句起到換行的作用,而continue語句會使Python解釋器忽略執(zhí)行第4行代碼,直接從下一次循環(huán)開始執(zhí)行。知識儲備:continue語句的應(yīng)用3任務(wù)實(shí)操——查找最大值及出現(xiàn)次數(shù)3任務(wù)實(shí)操查找最大值及出現(xiàn)次數(shù)實(shí)訓(xùn)【例5.3】編寫程序讀取整數(shù),找出它們中的最大值,然后計算它出現(xiàn)的次數(shù);設(shè)定輸入以數(shù)字0結(jié)束循環(huán)。例如:假設(shè)你輸入的是“3525550”;程序找出的最大數(shù)為5,且5的出現(xiàn)次數(shù)為4。分析:輸入無限個數(shù)字,以0結(jié)束,找出最大數(shù),以及計算最大數(shù)出現(xiàn)的次數(shù)。— 輸入:隨意一個整數(shù)(循環(huán))— 輸出:最大值及其出現(xiàn)次數(shù)— 例如:輸入3525550,輸出:最大值為:5,出現(xiàn)次數(shù)為:4次。具體編程示例:max=0#設(shè)置變量,存儲最大值count=0#設(shè)置變量,存儲最大值出現(xiàn)次數(shù)whileTrue:num=int(input("請輸入一個整數(shù):"))ifnum==0:breakifnum>max:max=numcount=1#當(dāng)出現(xiàn)新的最大值時,次數(shù)重置1elifnum==max:count+=1#自增1print("最大數(shù)為:{},出現(xiàn)次數(shù)為:{}。".format(max,count))任務(wù)實(shí)操——查找最大值及出現(xiàn)次數(shù)3運(yùn)行程序,輸出結(jié)果為:請輸入一個整數(shù):3請輸入一個整數(shù):5請輸入一個整數(shù):2請輸入一個整數(shù):5請輸入一個整數(shù):5請輸入一個整數(shù):5請輸入一個整數(shù):0最大數(shù)為:5,出現(xiàn)次數(shù)為:4。任務(wù)鞏固——猜字游戲3任務(wù)鞏固猜字游戲在程序中通過隨機(jī)函數(shù)(random庫)生成一個1-20之間的整數(shù),讓用戶通過交互界面輸入所猜的數(shù),如果大于預(yù)設(shè)的數(shù),顯示“遺憾,太大了”;小于預(yù)設(shè)的數(shù),顯示“遺憾,太小了”,如此循環(huán),直至猜中該數(shù),顯示“預(yù)測N次,你猜中了!”,其中N是用戶輸入數(shù)字的次數(shù)?!?輸入:1-20的整數(shù)— 輸出:猜測結(jié)果,如果為猜中輸出:“遺憾!太大了”或“遺憾!太小了”;如果猜中了輸出:預(yù)測了N次,你猜中了!生成隨機(jī)數(shù)可使用Python標(biāo)準(zhǔn)庫random中的random.randint(),其函數(shù)用法如下:importrandom#導(dǎo)入模塊num=random.randint(1,20)num:表示生成的隨機(jī)數(shù),是一個整數(shù)。輸出結(jié)果示例:請輸入您猜測的數(shù)字(1-20):13遺憾!太大了請輸入您猜測的數(shù)字(1-20):10遺憾!太大了請輸入您猜測的數(shù)字(1-20):6遺憾!太大了請輸入您猜測的數(shù)字(1-20):2遺憾!太小了請輸入您猜測的數(shù)字(1-20):5預(yù)測了6次,你猜中了!parTFOUR嵌套循環(huán)04知識儲備:嵌套循環(huán)語法格式4當(dāng)2個(甚至多個)循環(huán)結(jié)構(gòu)相互嵌套時,位于外層的循環(huán)結(jié)構(gòu)常簡稱為外層循環(huán)或外循環(huán),位于內(nèi)層的循環(huán)結(jié)構(gòu)常簡稱為內(nèi)層循環(huán)或內(nèi)循環(huán)。循環(huán)嵌套結(jié)構(gòu)的代碼,Python解釋器執(zhí)行的流程為:①當(dāng)外層循環(huán)條件為True時,則執(zhí)行外層循環(huán)結(jié)構(gòu)中的循環(huán)體。②外層循環(huán)體中包含了普通程序和內(nèi)循環(huán),當(dāng)內(nèi)層循環(huán)的循環(huán)條件為True時會執(zhí)行此循環(huán)中的循環(huán)體,直到內(nèi)層循環(huán)條件為False,跳出內(nèi)循環(huán)。③如果此時外層循環(huán)的條件仍為True,則返回第②步,繼續(xù)執(zhí)行外層循環(huán)體,直到外層循環(huán)的循環(huán)條件為False;④當(dāng)內(nèi)層循環(huán)的循環(huán)條件為False,且外層循環(huán)的循環(huán)條件也為False,則整個嵌套循環(huán)才算執(zhí)行完畢。循環(huán)嵌套的執(zhí)行流程圖如圖5.2所示:圖5.2循環(huán)嵌套的執(zhí)行流程圖下面通過具體案例說明嵌套循環(huán)語句的應(yīng)用。i=0whilei<3:forjinrange(2):print("i=",i,"j=",j)i=i+1運(yùn)行程序,輸出結(jié)果為:i=0j=0i=0j=1i=1j=0i=1j=1i=2j=0i=2j=1此程序中運(yùn)用了嵌套循環(huán)結(jié)構(gòu),其中外循環(huán)使用的是while語句,而內(nèi)循環(huán)使用的是for語句。知識儲備:嵌套循環(huán)語句的應(yīng)用4程序執(zhí)行的流程是:(1)一開始i=0,循環(huán)條件i<3成立,進(jìn)入while外循環(huán)執(zhí)行其外層循環(huán)體。(2)從j=0開始,由于jinrange(2)成立,因此進(jìn)入for內(nèi)循環(huán)執(zhí)行內(nèi)層循環(huán)體,直到j(luò)=2不滿足循環(huán)條件,跳出for循環(huán)體,繼續(xù)執(zhí)行while外循環(huán)的循環(huán)體。(3)③ 執(zhí)行i=i+1語句,如果i<10依舊成立,則從第②步繼續(xù)執(zhí)行。直到i<10不成立,則此循環(huán)嵌套結(jié)構(gòu)才執(zhí)行完畢。根據(jù)上面的分析,此程序中外層循環(huán)將循環(huán)3次(從i=0到i=2),而每次執(zhí)行外層循環(huán)時,內(nèi)層循環(huán)都從j=0循環(huán)執(zhí)行到j(luò)=1。因此,該嵌套循環(huán)結(jié)構(gòu)將執(zhí)行3*2=6次。嵌套循環(huán)執(zhí)行的總次數(shù)=外循環(huán)執(zhí)行次數(shù)*內(nèi)循環(huán)執(zhí)行次數(shù)任務(wù)實(shí)操——求解雞兔同籠問題4任務(wù)實(shí)操求解雞兔同籠問題【例5.4】阿曹在解答數(shù)學(xué)問題時遇到一個雞兔同籠問題:今有雞兔同籠,上有35頭、下有94足,假設(shè)雞兔均正常無殘疾,問雞兔各多少只?輸入兩個整數(shù),代表頭和腳的數(shù)量,如無解則輸出“DataError!”。請編程幫助阿曹求解雞兔同籠問題。— 輸入:兩個整
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年江蘇食品藥品職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年遼寧城市建設(shè)職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年黑龍江建筑職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試參考題庫含詳細(xì)答案解析
- 2026年黑龍江商業(yè)職業(yè)學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年江西工業(yè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試備考題庫及答案詳細(xì)解析
- 2026年三峽電力職業(yè)學(xué)院單招綜合素質(zhì)筆試模擬試題含詳細(xì)答案解析
- 2026年天津職業(yè)大學(xué)單招職業(yè)技能考試模擬試題含詳細(xì)答案解析
- 2026年資陽環(huán)境科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試備考試題及答案詳細(xì)解析
- 2026年宿遷職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試模擬試題含詳細(xì)答案解析
- 2026年內(nèi)江衛(wèi)生與健康職業(yè)學(xué)院單招職業(yè)技能考試備考試題含詳細(xì)答案解析
- 消防廉潔自律課件大綱
- 道路二灰碎石基層施工技術(shù)方案及質(zhì)量控制
- DB37∕T 4491-2021 三倍體單體牡蠣淺海筏式養(yǎng)殖技術(shù)規(guī)范
- 2025年注冊監(jiān)理工程師繼續(xù)教育市政公用工程專業(yè)考試題及答案
- (2025)新課標(biāo)義務(wù)教育數(shù)學(xué)(2022年版)課程標(biāo)準(zhǔn)試題庫(附含答案)
- 金太陽陜西省2028屆高一上學(xué)期10月月考物理(26-55A)(含答案)
- 2025年青海省事業(yè)單位招聘考試教師物理學(xué)科專業(yè)知識試卷解析
- 成都城投集團(tuán)招聘筆試試題
- 2025年安全生產(chǎn)知識教育培訓(xùn)考試試題及標(biāo)準(zhǔn)答案
- 2025年廣西壯族自治區(qū)中央遴選真題及參考答案(b類)
- 品牌管理指南的建模指南
評論
0/150
提交評論