版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python程序設(shè)計(jì)基礎(chǔ)第3章程序結(jié)構(gòu)第3章程序結(jié)構(gòu)3.1程序結(jié)構(gòu)3.2選擇結(jié)構(gòu)3.3循環(huán)結(jié)構(gòu)3.4機(jī)器龜圖形庫(kù)3.1控制結(jié)構(gòu)1.控制結(jié)構(gòu):為了控制一級(jí)語(yǔ)句的執(zhí)行順序而引入的邏輯結(jié)構(gòu)2.程序的結(jié)構(gòu)一般有三種:順序結(jié)構(gòu)選擇結(jié)構(gòu)(也稱分支結(jié)構(gòu))循環(huán)結(jié)構(gòu)
順序結(jié)構(gòu)(sequencestructure)結(jié)構(gòu)的特點(diǎn)是:程序從入口點(diǎn)a開(kāi)始,按語(yǔ)句的順序執(zhí)行所有操作,直到出口點(diǎn)b處,所以稱為順序結(jié)構(gòu)。選擇結(jié)構(gòu)(selectionstructure)decisionstructure它需要根據(jù)某一特定的條件選擇其中的一個(gè)分支執(zhí)行。選擇結(jié)構(gòu)有單選擇、雙選擇和多選擇三種形式。循環(huán)結(jié)構(gòu)(repetitionstructure)表示程序反復(fù)執(zhí)行某個(gè)或某些操作,直到某條件為假(或?yàn)檎妫r(shí)才可終止循環(huán)。3.1控制結(jié)構(gòu)示例:計(jì)算貸款支付額第1階段:需求分析必須由用戶鍵入利率、貸款數(shù)以及貸款的年限必須計(jì)算出每月還貸和總還款數(shù)第2階段:系統(tǒng)分析輸出是月供和總還款數(shù),可以通過(guò)下面的公式來(lái)獲?。?/p>
示例:計(jì)算貸款支付額第3階段:系統(tǒng)設(shè)計(jì)第1步:提示用戶輸入年利率、貸款年限和總貸款數(shù)目第2步:輸入的年利率是百分比格式的數(shù)字,除以100轉(zhuǎn)換為小數(shù),再除以12得到月利率。第3步:使用公式計(jì)算月供第4步:通過(guò)將月供乘以12再乘以貸款年限求出總還款總額。第5步:顯示月供和還款總額。示例:計(jì)算貸款支付額第4階段:實(shí)現(xiàn)過(guò)程編寫(xiě)代碼,其中要寫(xiě)成:(1+月利率)**(年限*12)第5階段:測(cè)試過(guò)程利用幾組樣本輸入數(shù)據(jù)來(lái)驗(yàn)證輸出是否正確順序結(jié)構(gòu):程序流程圖輸入年利率輸入年數(shù)輸入總貸款額計(jì)算月利率
計(jì)算月供
計(jì)算總還款數(shù)
輸出結(jié)果開(kāi)始結(jié)束代碼示例:#計(jì)算貸款支付額#輸入年利率,如7.25annualInterestRate=eval(input("輸入年利率:"))#輸入年數(shù)numberOfYears=eval(input("輸入年數(shù):"))#輸入總貸款額loanAmount=eval(input("輸入總貸款額:"))#計(jì)算月利率monthlyInterestRate=annualInterestRate/1200#計(jì)算月供monthlyPayment=(loanAmount*monthlyInterestRate)/\(1-1/(1+monthlyInterestRate)**(numberOfYears*12))#計(jì)算總還款數(shù)totalPayment=monthlyPayment*numberOfYears*12#顯示結(jié)果print("月供是:",int(monthlyPayment*100)/100)#保留兩位小數(shù)print("總還款數(shù)是:",int(totalPayment*100)/100)3.2.1.單分支選擇結(jié)構(gòu)3.2.2.雙分支選擇結(jié)構(gòu)3.2.3多分支選擇結(jié)構(gòu)3.2.4嵌套選擇結(jié)構(gòu)3.2選擇結(jié)構(gòu)3.2選擇結(jié)構(gòu)基本的條件語(yǔ)句有分支的條件語(yǔ)句多分支if-elif-else嵌套選擇結(jié)構(gòu)if條件:
語(yǔ)句塊1
if條件:
語(yǔ)句塊1else:
語(yǔ)句塊2if條件1:
語(yǔ)句塊1elif條件2:
語(yǔ)句塊2…elif條件n:
語(yǔ)句塊nelse:
語(yǔ)句塊n+1
if條件:
語(yǔ)句塊1else:
語(yǔ)句塊2語(yǔ)句塊中包含選擇結(jié)構(gòu)語(yǔ)句a=3ifa:print(“true”)else:
print(“false”)a=3ifa=2:print(“true”)else print(“false”)a=Trueifa:print(“true”)else print(“false”)示例:求某年某月包含多少天開(kāi)始輸入年year輸入月month是2月?是閏年?29天YYNN28天1,3,5,7,8,10,12月?31天YN30天結(jié)束示例#輸入年、月year=int(input("年:"))month=int(input("月:"))ifmonth==2:#判斷該年是否是閏年else:print(str(year)+"年"+str(month)+"月是"+str(days)+"天")ifmonth==1ormonth==3ormonth==5ormonth==7ormonth==8ormonth==10ormonth==12:days=31else:days=30if(year%4==0andyear%100!=0)or(year%400==0):days=29else:days=28#也可以用標(biāo)記
leap=(year%4==0andyear%100!=0)or(year%400==0)ifleap:days=29else:days=28Ifa=3:
如同程序結(jié)構(gòu)中有分支結(jié)構(gòu),在人生的道路上也不會(huì)一直是一條直道,會(huì)面臨著很多的選擇,但只要你認(rèn)準(zhǔn)了方向,做你認(rèn)為正確的選擇,勇往直前,就一定能到達(dá)你的目標(biāo)。注:max=aifa>belseb這是一種類似于其它編程語(yǔ)言中三目運(yùn)算符?:的寫(xiě)法。Python是一種極簡(jiǎn)主義的編程語(yǔ)言,它沒(méi)有引入?:這個(gè)新的運(yùn)算符,而是使用已有的ifelse關(guān)鍵字來(lái)實(shí)現(xiàn)相同的功能。3.3.1單分支選擇結(jié)構(gòu)格式:
if條件:
語(yǔ)句塊1#分支語(yǔ)句塊,書(shū)寫(xiě)時(shí)必須縮進(jìn)。語(yǔ)句塊1條件TrueFalse只有一條選擇執(zhí)行的路徑,如果條件不是True,退出結(jié)構(gòu)3.3.1單分支選擇結(jié)構(gòu)一個(gè)基本的條件語(yǔ)句由一個(gè)關(guān)鍵字if開(kāi)頭,跟上一個(gè)表示條件的邏輯表達(dá)式,然后是一個(gè)冒號(hào):。從下一行開(kāi)始,所有縮進(jìn)了的語(yǔ)句就是當(dāng)條件成立(邏輯表達(dá)式計(jì)算的結(jié)果為T(mén)rue)的時(shí)候要執(zhí)行的語(yǔ)句。如果條件不成立,就跳過(guò)這些語(yǔ)句不執(zhí)行,而繼續(xù)下面的其他語(yǔ)句。3.3.1單分支選擇結(jié)構(gòu)3.3.1單分支選擇結(jié)構(gòu)(1)輸入一個(gè)學(xué)生的成績(jī),判斷其是否及格了輸入成績(jī)scorescore>=60YN輸出及格了結(jié)束開(kāi)始3.3.1單分支選擇結(jié)構(gòu)score=int(input("請(qǐng)輸入分?jǐn)?shù):"))ifscore>=60:print("恭喜!"+str(score)+"分及格了!")print("恭喜!",score,"分及格了!")3.3.1單分支選擇結(jié)構(gòu)x=int(input())y=z=0ifx>20:y=100 #書(shū)寫(xiě)縮進(jìn),當(dāng)x>20時(shí)執(zhí)行z=200 #書(shū)寫(xiě)縮進(jìn),當(dāng)x>20時(shí)執(zhí)行print(y+z) #if語(yǔ)句后續(xù)的語(yǔ)句3.3.2雙分支選擇結(jié)構(gòu)(2)輸入一個(gè)學(xué)生的成績(jī),判斷其是及格還是不及格輸入成績(jī)scorescore>=60YN輸出及格了結(jié)束開(kāi)始輸出不及格3.3.2雙分支選擇結(jié)構(gòu)格式:if條件:
語(yǔ)句塊1#條件成立時(shí)執(zhí)行。else:
語(yǔ)句塊2#條件不成立時(shí)執(zhí)行。if-else的流程圖
語(yǔ)句塊1條件TrueFalse語(yǔ)句塊23.3.2雙分支選擇結(jié)構(gòu)score=int(input("請(qǐng)輸入分?jǐn)?shù):"))ifscore>=60:print("恭喜!"+str(score)+"分及格了!")else:print("很遺憾!"+str(score)+"分不及格!")3.3.2雙分支選擇結(jié)構(gòu)num1=int(input())num2=int(input())ifnum1>num2:
max=num1
else:
max=num2
print(max)例
比較2個(gè)數(shù)的大小語(yǔ)句塊2(條件不成立時(shí)執(zhí)行)語(yǔ)句塊1(條件成立時(shí)執(zhí)行)3.3.3多分支選擇結(jié)構(gòu)if-elif-else
語(yǔ)句if
condition_1:
statement(s)elif
condition_2:
statement(s)elif
condition_3:
statement(s)else:statement(s)根據(jù)需要可以插入多個(gè)elif從句3.3.3多分支選擇結(jié)構(gòu)x=1;y=2;ifx==1:print("true")elify==2:print("false")else:print("truefalse")3.3.3多分支選擇結(jié)構(gòu)(3)輸入一個(gè)學(xué)生的成績(jī),判斷其是優(yōu)秀、良好、中等、及格還是不及格3.3.3多分支選擇結(jié)構(gòu)score=int(input("請(qǐng)輸入分?jǐn)?shù):"))ifscore>=90:print(str(score)+"分是優(yōu)秀!")elifscore>=80:print(str(score)+"分是良好!")elifscore>=70:print(str(score)+"分是中等!")elifscore>=60:print(str(score)+"分是及格!")else:print("很遺憾!"+str(score)+"分不及格!")3.3.4嵌套的選擇結(jié)構(gòu)3.3.4嵌套的選擇結(jié)構(gòu)在嵌套if語(yǔ)句里,最重要的問(wèn)題是else的匹配。else總是根據(jù)它自己所處的縮進(jìn)和同列的最近那個(gè)if匹配。編寫(xiě)嵌套的if語(yǔ)句時(shí)應(yīng)遵守下列規(guī)則:確保每一個(gè)else從句都與它對(duì)應(yīng)的if從句對(duì)齊。確保每一個(gè)語(yǔ)句塊內(nèi)的語(yǔ)句都保持一致的縮進(jìn)3.3.4嵌套的選擇結(jié)構(gòu)score=int(input("請(qǐng)輸入分?jǐn)?shù):"))ifscore>=70:ifscore>=80:ifscore>=90:print(str(score)+"分是優(yōu)秀!")else:print(str(score)+"分是良好!")else:print(str(score)+"分是中等!")else:ifscore>=60:print(str(score)+"分是及格!")else:print("很遺憾!"+str(score)+"分不及格!")第3章循環(huán)結(jié)構(gòu)3.3.1.while循環(huán)3.3.2for循環(huán)語(yǔ)句3.3.3嵌套循環(huán)3.3.4跳轉(zhuǎn)語(yǔ)句使用循環(huán)目的:告訴程序重復(fù)執(zhí)行某些語(yǔ)句。示例:計(jì)算1~5之間數(shù)的和num=1,sum=0num<=5?Ysum=sum+numN輸出累加和sum開(kāi)始結(jié)束num=1sum=0whilenum<=5sum=sum+num
num=num+1print(“1-5的和為:"+str(sum))num=1sum=0whilenum<=5:sum=sum+num
num=num+1print(“1-5的和為:"+str(sum))num=num+1指出程序中的錯(cuò)誤3.3.1while循環(huán)語(yǔ)句while循環(huán)也稱為先測(cè)試循環(huán),一個(gè)循環(huán)體單次執(zhí)行被稱作循環(huán)的一次迭代。注:條件表達(dá)式永遠(yuǎn)為true,無(wú)限循環(huán)(死循環(huán))
。3.3.1while循環(huán)語(yǔ)句累加和:通過(guò)循環(huán)的每一次迭代累加得到一組數(shù)據(jù)的和。3.3.1while循環(huán)語(yǔ)句while條件:
語(yǔ)句塊1#書(shū)寫(xiě)縮進(jìn)else:
語(yǔ)句塊2#書(shū)寫(xiě)縮進(jìn)條件語(yǔ)句塊1TrueFalse語(yǔ)句塊23.3.1while循環(huán)語(yǔ)句執(zhí)行while語(yǔ)句的流程:判斷條件是否成立如果條件成立,則執(zhí)行語(yǔ)句塊1回到第1步如果條件不成立,若有else子句,執(zhí)行語(yǔ)句塊2結(jié)束循環(huán)語(yǔ)句書(shū)寫(xiě)必須縮進(jìn)在循環(huán)體內(nèi)部,應(yīng)該有改變循環(huán)條件的語(yǔ)句,以控制循環(huán)的次數(shù),避免產(chǎn)生無(wú)限循環(huán)(死循環(huán))。示例:成績(jī)輸入錯(cuò)誤重新輸入輸入一個(gè)學(xué)生的成績(jī),首先判斷輸入的分?jǐn)?shù)是否是0和100之間#判斷輸入的成績(jī)是否正確score=int(input("請(qǐng)輸入分?jǐn)?shù):"))whilescore<0orscore>100:score=int(input("請(qǐng)重新輸入分?jǐn)?shù):"))ifscore>=90:print(str(score)+"分是優(yōu)秀!")elifscore>=80:print(str(score)+"分是良好!")elifscore>=70:print(str(score)+"分是中等!")elifscore>=60:print(str(score)+"分是及格!")else:print("很遺憾!"+str(score)+"分不及格!")輸入成績(jī)scorescore>=0并且score<=100YN判斷成績(jī)等級(jí)結(jié)束開(kāi)始示例:計(jì)算1~100內(nèi)的偶數(shù)累加和sum=0num=0;whilenum<=100: sum=sum+numnum=num+2print("sum="+str(sum))示例:計(jì)算1~100內(nèi)的偶數(shù)累加和sum=0num=1;whilenum<=100:ifnum%2==0:sum=sum+numnum=num+1print("sum="+str(sum))判斷一個(gè)數(shù)是否為完全立方數(shù)num=int(input("輸入一個(gè)整數(shù):"))ans=0whileans**3<abs(num):ans=ans+1ifans**3==num:ifnum<0:ans=-ansprint(str(ans)+"是"+str(num)+"的立方根")else:print(str(num)+“不是完全立方數(shù)“)示例:成績(jī)統(tǒng)計(jì)輸入一個(gè)班級(jí)的成績(jī),統(tǒng)計(jì)及格的人數(shù)和不及格的人數(shù),并求出平均成績(jī)。注:事先不知道班級(jí)人數(shù),成績(jī)輸入-1結(jié)束總?cè)藬?shù)count=0總分total=0及格人數(shù)passNums=0不及格人數(shù)nopassNums=0平均成績(jī)average=0總?cè)藬?shù)count=0總分total=0及格人數(shù)passNums=0不及格人數(shù)nopassNums=0平均成績(jī)average=0輸入成績(jī)scorescore!=-1?count+=1,total+=scorescore>=60?passNums+=1nopassNums+=1輸入成績(jī)score輸出信息average=total/countYYNN3.3.2for循環(huán)語(yǔ)句:計(jì)數(shù)控制循環(huán)循環(huán)迭代執(zhí)行的次數(shù)是確定的
一般格式:
for變量in[值1,值2,…]:
語(yǔ)句塊示例:計(jì)算1~5之間數(shù)的累加和(for循環(huán))num=1,sum=0num<=5?Ysum=sum+numN輸出累加和sum開(kāi)始結(jié)束sum=0fornumin[1,2,3,4,5]:sum=sum+numprint("1-5的累加和為:"+str(sum))num=1sum=0whilenum<=5:sum=sum+numnum=num+1print("1-5的累加和為:"+str(sum))3.3.2for循環(huán)語(yǔ)句forweekin['Sun','Mon','Tues','Wed','Thur','Fri','Sat']:print(week)SunMonTuesWedThurFriSatfornumin[1,2,3,4,5]:print(num,end=',')1,2,3,4,5,3.3.2for循環(huán)語(yǔ)句fornumin[1,2,3,4,5]:fornuminrange(5):fornuminrange(1,end+1):sum=0fornumin[1,2,3,4,5]:sum=sum+numprint("1-5的累加和為:"+str(sum))3.3.2for循環(huán)語(yǔ)句range函數(shù)可以簡(jiǎn)化計(jì)數(shù)控制的for循環(huán)的編寫(xiě)過(guò)程
range
返回一個(gè)稱為iterable(迭代器)對(duì)象迭代器:包含了供迭代處理的一組數(shù)據(jù)
range
參數(shù)含義:一個(gè)參數(shù):上限值兩個(gè)參數(shù):初始和上限值三個(gè)參數(shù):初始值、上限值、步長(zhǎng)3.3.2for循環(huán)語(yǔ)句fornuminrange(1,10,2)示例:計(jì)算1~100內(nèi)的偶數(shù)累加和#第二種方法:for方法sum2=0fornum2inrange(1,100+1):ifnum2%2==0:sum2=sum2+num2print("sum2="+str(sum2))#第三種方法:for方法sum3=0fornum3inrange(2,100+1,2):sum3=sum3+num3print("sum3="+str(sum3))#第一種方法:while方法sum1=0num1=1;whilenum1<=100:ifnum1%2==0:sum1=sum1+num1num1=num1+1print("sum1="+str(sum1))num1=2,sum=0whilenum1<=100:sum1=sum1+num1num1=num1+2示例:打印圖案54***************************************************
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025重慶歌樂(lè)山社區(qū)衛(wèi)生服務(wù)中心招聘2人考試筆試備考試題及答案解析
- 2025針織行業(yè)風(fēng)險(xiǎn)投資發(fā)展分析及投資融資策略研究報(bào)告
- 2025年六安市裕安區(qū)徐集鎮(zhèn)公開(kāi)招考村級(jí)后備干部4名考試筆試模擬試題及答案解析
- 2025重慶滬渝創(chuàng)智生物科技有限公司面向社會(huì)招聘工作人員5人考試筆試參考題庫(kù)附答案解析
- 跨界融合人才培養(yǎng)-第1篇-洞察及研究
- 2026年甘肅平?jīng)鲂l(wèi)生專業(yè)技術(shù)資格考試中醫(yī)針灸學(xué)主治醫(yī)師(相關(guān)專業(yè)知識(shí))模擬練習(xí)題及答案解析
- 糖料作物栽培工誠(chéng)信考核試卷含答案
- 過(guò)程控制系統(tǒng)點(diǎn)檢員安全意識(shí)競(jìng)賽考核試卷含答案
- 2025造紙行業(yè)環(huán)保約束下產(chǎn)業(yè)升級(jí)策略及市場(chǎng)發(fā)展研究報(bào)告
- 薄荷油對(duì)皮膚屏障功能的影響及修復(fù)機(jī)制-洞察及研究
- 2026年環(huán)境影響評(píng)價(jià)工程師之環(huán)評(píng)技術(shù)導(dǎo)則與標(biāo)準(zhǔn)考試題庫(kù)500道【含答案】
- 別墅加建合同范本
- kvb827四旋翼無(wú)人機(jī)課件
- 2025年甘肅省武威市涼州區(qū)和平鎮(zhèn)選聘專職大學(xué)生村文書(shū)參考模擬試題及答案解析
- 醫(yī)院培訓(xùn)課件:《中國(guó)新生兒營(yíng)養(yǎng)支持臨床應(yīng)用指南解讀》
- (一診)達(dá)州市2026屆高三第一次診斷性測(cè)試語(yǔ)文試題(含答案)
- 從臨床指南更新看IBD生物劑治療策略
- (2026年)如何做好科室護(hù)理質(zhì)量管理課件
- 2025年湖南省長(zhǎng)沙市政府采購(gòu)評(píng)審專家考試真題(附含答案)
- 2025年嘉魚(yú)縣輔警招聘考試真題及答案1套
- 《阿拉善右旗阿拉騰敖包鐵礦、螢石礦開(kāi)采方案》評(píng)審意見(jiàn)書(shū)
評(píng)論
0/150
提交評(píng)論