版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
《Python程序設(shè)計》?精品課件合集?精品課件合集第三章開始Python程序設(shè)計程序設(shè)計就是根據(jù)問題的要求,設(shè)計解決問題的算法并采用某種語言編寫程序的過程。第三章開始Python程序設(shè)計3.1順序結(jié)構(gòu)程序設(shè)計3.2分支(選擇)結(jié)構(gòu)程序設(shè)計3.3循環(huán)結(jié)構(gòu)程序設(shè)計小結(jié)3.1順序結(jié)構(gòu)程序設(shè)計41.IPO模式輸入數(shù)據(jù)分析、輸出結(jié)果分析、處理過程(算法),稱之為IPO程序設(shè)計模式,I(Input)輸入、O(Output)輸出、P(Process)處理。輸入I(草)處理P(牛)輸出O(奶)程序設(shè)計的關(guān)鍵是對問題進(jìn)行分析,弄清楚問題的輸入數(shù)據(jù)是什么?需要得到什么結(jié)果?重點是如何根據(jù)輸入數(shù)據(jù)獲得輸出結(jié)果,也就是如何對輸入數(shù)據(jù)進(jìn)行處理,獲得最后的結(jié)果,這個處理過程稱為算法。3.1順序結(jié)構(gòu)程序設(shè)計5【例3-1】已知圓柱體的底半徑r=3.5,高h(yuǎn)=6.7,請編程計算圓柱體的體積和表面積。采用IPO程序設(shè)計模式分析如下:I(輸入數(shù)據(jù)):底半徑r=3.5,高h(yuǎn)=6.7,2個輸入數(shù)據(jù)。O(輸出結(jié)果):圓柱體的體積v和表面積s,2個輸出結(jié)果。P(處理過程(算法))(1)計算底面積s1=πr2,(2)計算體積v=s1×h,(3)計算底的周長l=2πr,(4)計算表面積s=l×h+2×s1,(5)輸出結(jié)果v和s。根據(jù)IPO模式的分析結(jié)果,編寫如下程序:#eg3_1.pyimportmath#輸入數(shù)據(jù)r=3.5h=6.7#中間處理s1=math.pi*r*rv=s1*hl=2*math.pi*rs=l*h+2*s1#輸出結(jié)果print("圓柱體的體積=%f,表面積=%f"%(v,s),sep=',')62.順序結(jié)構(gòu)程序順序結(jié)構(gòu)程序指的是程序執(zhí)行順序是按語句的書寫順序進(jìn)行的。例3-1就是一個順序結(jié)構(gòu)程序。3.算法算法就是解決問題的方法或步驟,是程序設(shè)計的靈魂。算法的描述方法很多。常見的有自然語言法、偽代碼法、流程圖法、NS流程圖法等。3.1順序結(jié)構(gòu)程序設(shè)計7流程圖符號開始與結(jié)束框。用來表示一個過程的開始或結(jié)束?!遍_始”或”結(jié)束”寫在符號內(nèi)。輸入/輸出框。用于數(shù)據(jù)的輸入和輸出。判定框。用來表示過程中的一項判定或一個分岔點,判定或分岔的條件寫在菱形內(nèi),常以問題的形式出現(xiàn)。對該問題的回答決定了判定符號之外引出的路線,每條路線標(biāo)上相應(yīng)的回答。處理框。用來表示過程的一個單獨步驟。具體內(nèi)容寫在框內(nèi)。
流程線。用來表示步驟在順序中的進(jìn)展。流程線的箭頭表示一個過程的流程方向。連接框。用來表示流程圖的待續(xù)。圈內(nèi)有一個字母或數(shù)字。在相互聯(lián)系的流程圖內(nèi),連接符號使用同樣的字母或數(shù)字,以表示各個過程是如何連接的。3.1順序結(jié)構(gòu)程序設(shè)計開始A計算周長:l=2πrA輸出體積和表面積結(jié)束計算表面積:s=l×h+2×s1輸入數(shù)據(jù):r=3.5,h=6.7
計算體積:v=s1×h計算:s1=πr28例3-1流程圖3.1順序結(jié)構(gòu)程序設(shè)計9縮進(jìn)Python程序是通過代碼的縮進(jìn)來體現(xiàn)代碼之間的邏輯關(guān)系,即層次結(jié)構(gòu)的。Python的代碼塊是從第一行尾部”:”以及下一行代碼的自動進(jìn)行縮進(jìn)開始,直到縮進(jìn)結(jié)束,表示一個代碼塊。同一級別代碼塊的縮進(jìn)量必須相同。如:k=0foriin[1,2,3,4,5]:k=k+iprint(k)print(i)這段代碼中foriin[1,2,3,4,5]:k=k+iprint(k)print(i)是一個代碼塊,其中k=k+iprint(k)print(i)是屬于for語句,所以向后縮進(jìn)4.Python程序設(shè)計規(guī)范3.1順序結(jié)構(gòu)程序設(shè)計10代碼注釋代碼的注釋是程序中不可少的部分,良好的注釋可以使程序的可讀性增強,同樣也方便程序員后期進(jìn)行代碼的維護(hù)。Python代碼的注釋有兩種形式。(1)單行注釋,以”#”開始,表示本行是注釋行,也就是”#”之后的內(nèi)容是注釋信息。(2)多行注釋,用三個單引號”’’’”或者是三個雙引號”"""”將注釋的內(nèi)容括起來。如:’’’這段程序的功能是:求1~100的和’’’sum=0forkinrange(101): sum=sum+kprint(sum)4Python程序設(shè)計規(guī)范3.1順序結(jié)構(gòu)程序設(shè)計11其它規(guī)則(1)一個語句行太長,可以在行尾用”\”來續(xù)行。(2)一般一個import語句只導(dǎo)入一個模塊,盡量避免導(dǎo)入多個模塊。(3)使用必要的空格和空行來增強代碼的清晰度和可讀性。一般在運算符的兩側(cè)、逗號兩側(cè)建議增加空格,代碼塊之間增加空行。(4)Python官網(wǎng)也有關(guān)于代碼風(fēng)格的指南PEP8,見/dev/peps/pep-0008/。4.Python程序設(shè)計規(guī)范3.1順序結(jié)構(gòu)程序設(shè)計12【例3-2】請設(shè)計一個定期存款計算器。要求輸入存款金額、存款期限(整年)和存款利率,由計算器計算到期的本息總額。(1)根據(jù)IPO模式分析如下I(輸入數(shù)據(jù)):三個輸入數(shù)據(jù),分別是存款金額、利率和年限。O(輸出結(jié)果):本息總額。P(處理過程(算法)):根據(jù)公式,存款金額×(1+利率)年限,即可計算出本息總額。(2)算法設(shè)計(自然語言描述)A1:輸入存款金額principal;A2:輸入利率rate;A3:輸入存款年限year;A4:計算final=principal×(1+rate)yearA5:輸出計算結(jié)果,本息總額。5.應(yīng)用案例(1)3.1順序結(jié)構(gòu)程序設(shè)計13(3)編寫程序#eg3_2.py#存款計算器importmath#輸入存款金額、利率和年限principal=float(input('請輸入存款金額:'))rate=float(input('請輸入存款利率:'))year=int(input('請輸入存款年限:'))#計算本息總額final=principal*math.pow(1+rate,year)#輸出本息總額print("本息總額為%.2f"%final)3.1順序結(jié)構(gòu)程序設(shè)計14(4)調(diào)試程序程序調(diào)試后,輸出結(jié)果及輸入數(shù)據(jù)如下:請輸入存款金額:1000請輸入存款利率:0.025請輸入存款年限:3本息總額為1076.893.1順序結(jié)構(gòu)程序設(shè)計156.print()函數(shù)print()是Python的內(nèi)建(內(nèi)置)函數(shù)。其功能是輸出信息。常用格式如下:(1)輸出實例對象或表達(dá)式列表的值:print(‘23+45=’,23+45)。(2)格式化輸出實例對象或表達(dá)式列表的值:print(“本息總額為%.2f”%final),”%”為格式控制符,格式符如下表所示。%m.nf格式中,n表示小數(shù)部分的位數(shù),m表示輸出的總寬度,當(dāng)不夠時,按實際輸出,如print(‘%2.3f’%123.5678),實際輸出結(jié)果為”123.568”。(3)控制輸出項分隔符及換行設(shè)置,通過參數(shù)”sep”和“end”的設(shè)置來實現(xiàn)。”sep”是設(shè)置輸出項的分隔符,如”sep=‘,’”表示輸出項之間用”,”進(jìn)行分隔?!眅nd”是用于設(shè)置結(jié)束符的,每個print()默認(rèn)是進(jìn)行換行,如果設(shè)置了”end=‘X’”,則不換行,以所設(shè)置的符號=‘X’作為結(jié)束符。格式符含
義d,i帶符號的十進(jìn)制整數(shù)o不帶符號的八進(jìn)制u不帶符號的十進(jìn)制X/x不帶符號的十六進(jìn)制E/e科學(xué)計數(shù)法表示的浮點數(shù)f/F十進(jìn)制浮點數(shù)G/g如果指數(shù)大于4或者小于精度值則和e相同,其它情況和F/f相同C單字符(接受整數(shù)或者單字符字符串)r字符串(使用repr轉(zhuǎn)換任意python對象)s字符串(使用str轉(zhuǎn)換任意python對象)3.1順序結(jié)構(gòu)程序設(shè)計167.input()函數(shù)input()是Python內(nèi)建(內(nèi)置)函數(shù)。其功能是從控制臺獲?。ㄝ斎耄┮粋€字符串,調(diào)用格式為input([提示字符串]),如input('請輸入存款利率:'),執(zhí)行時,屏幕上先顯示提示字符串”請輸入存款利率:”,再等待用戶輸入??梢杂胔elp()函數(shù)查看其功能和參數(shù),即:help(print)、help(input)3.1順序結(jié)構(gòu)程序設(shè)計178.類型轉(zhuǎn)換input()輸入的是一個字符串,可實際上利率、年限和存款金額都是整數(shù)或者是浮點數(shù),因此需要利用類型轉(zhuǎn)換符將字符串轉(zhuǎn)換成需要的類型。轉(zhuǎn)換格式為:”類型符(轉(zhuǎn)換對象)”,如year=int(input('請輸入存款年限:')),將輸入的年限轉(zhuǎn)換為int類型,再賦值給year變量。3.1順序結(jié)構(gòu)程序設(shè)計189.Python內(nèi)建函數(shù)函
數(shù)
功
能
描
述abs(x)返回x的絕對值或復(fù)數(shù)的模hasattr(object,name)測試object是否具有name元素input([“提示字符串”])從控制臺獲得輸入字符串isinstance(object,class_or_tuple)測試object是否屬于指定類型的實例,如果有多個類型,需要放入元組中l(wèi)ist([x])、tuple([x])、dict([x])把x轉(zhuǎn)換為列表、元組、字典,或生成空列表、元組、字典map(func,seq)返回以seq序列的元素作為func參數(shù)進(jìn)行計算得到的新序列open(filename[,mode])以指定的模式mode打開文件filename,并返回文件對象print(value,……,sep=’’,end=’\n’,file=sys.stdout,flush=False)基本輸出函數(shù)range([start,]end[,step])返回range對象,包含區(qū)間[start,end)內(nèi)以step為步長的整數(shù)reversed(seq)將seq序列反轉(zhuǎn)(逆序)round(x[,小數(shù)位數(shù)])對x進(jìn)行四舍五入,保留指定的小數(shù)位數(shù),缺省小數(shù)位數(shù),則返回整數(shù)str(object)將object轉(zhuǎn)換為字符串sorted(iterable,key=None,reverse=False)對iterable進(jìn)行排序,key指定排序的規(guī)則,reverse指定升序或降序排列zip(sqe1[,seq2[……]])返回以sqe1[,seq2[……]]序列對應(yīng)元素形成的元組dir([obj])列出對象的所有屬性和方法help([obj])函數(shù)或模塊的詳細(xì)說明id(obj)獲取對象的內(nèi)存地址type(obj)返回對象的類型divmod(a,b)把除數(shù)和余數(shù)運算結(jié)果結(jié)合起來,返回一個包含商和余數(shù)的元組(a//b,a%b)filter(function,iterable)用于過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表hex(x)用于將一個整數(shù)轉(zhuǎn)換成16進(jìn)制,以字符串形式表示bin(x)用于將一個整數(shù)轉(zhuǎn)換成二進(jìn)制,以字符串形式表示oct(x)用于將一個整數(shù)轉(zhuǎn)換成8進(jìn)制,以字符串形式表示ord(char)將字符轉(zhuǎn)換成對應(yīng)的十進(jìn)制ASCII碼chr(x)將一個ASCII轉(zhuǎn)換成對應(yīng)的字符all(iterable)判斷給定的可迭代參數(shù)iterable中的所有元素是否都為TRUE,如果是返回True,否則返回Falseany(iterable)any()函數(shù)用于判斷給定的可迭代參數(shù)iterable是否全部為False,則返回False,如果有一個為True,則返回True內(nèi)置函數(shù)數(shù)量多,功能強大3.1順序結(jié)構(gòu)程序設(shè)計19
10.應(yīng)用案例(2)開始輸入數(shù)據(jù):a,b,c
計算:s=(a+b+c)/2輸出面積結(jié)束
3.1順序結(jié)構(gòu)程序設(shè)計20(3)編寫程序#eg3_3.py#計算三角形的面積importmath#輸入三條邊a=float(input("請輸入三角形的第一條邊:"))b=float(input("請輸入三角形的第二條邊:"))c=float(input("請輸入三角形的第三條邊:"))#計算面積s=(a+b+c)/2area=math.sqrt(s*(s-a)*(s-b)*(s-c))#輸出結(jié)果print("三角形的面積是:%f"%area)3.1順序結(jié)構(gòu)程序設(shè)計Python程序設(shè)計第三章開始Python程序設(shè)計3.1順序結(jié)構(gòu)程序設(shè)計3.2分支(選擇)結(jié)構(gòu)程序設(shè)計3.3循環(huán)結(jié)構(gòu)程序設(shè)計小結(jié)3.2分支(選擇)結(jié)構(gòu)程序設(shè)計24在進(jìn)行程序設(shè)計時,需要根據(jù)條件編寫不同的處理程序,實現(xiàn)用戶的需求,如銀行自動柜員機(jī),當(dāng)正確輸入密碼后,會出現(xiàn)多個選項,當(dāng)用戶選擇某個選項后,自動進(jìn)入相應(yīng)的功能界面。這類程序就是分支(選擇)結(jié)構(gòu)程序。1.分支結(jié)構(gòu)程序根據(jù)什么進(jìn)行選擇向左還是向右?表達(dá)式就是用運算符將運算量連接起來的式子。25算術(shù)表達(dá)式>>>3+5**8390628>>>type(3+5**8)<class'int'>關(guān)系表達(dá)式>>>a=6>>>b=8>>>a>b,a<=b(False,True)>>>type(a>b)<class'bool'>>>>1<3>8#等價于1<3and3>8False2.表達(dá)式邏輯表達(dá)式>>>aandb8>>>type(aandb)<class'int'>成員測試表達(dá)式>>>x=[1,2,4]>>>y=7>>>z=2>>>yinxFalse>>>zinxTrue3.2分支(選擇)結(jié)構(gòu)程序設(shè)計26同一性測試表達(dá)式>>>x=[1,2,3]>>>y=(1,2,3)>>>z=[4,'eyru']>>>k=y>>>xisyFalse>>>zisxFalse>>>kisyTrue同一性測試是檢查兩個變量是否指向同一個實例??梢杂胕d(對象)命令查看某個對象的內(nèi)存地址。>>>id(x)52006856>>>id(y)52072592>>>id(z)52138568>>>id(k)520725922.表達(dá)式復(fù)雜表達(dá)式判斷一個年份是否是閏年的表達(dá)式為:year%4==0andyear%100!=0oryear%400==0判斷大于50歲的女性表達(dá)式為:年齡>50and性別==’女’y和k地址相同,所以kisy為True3.2分支(選擇)結(jié)構(gòu)程序設(shè)計如取出378的每一位數(shù)字if語句格式if表達(dá)式:
語句塊if語句的執(zhí)行當(dāng)表達(dá)式的值為True或者其它等價值(非空/0)時,表示條件滿足,則語句塊將被執(zhí)行,否則該語句塊不被執(zhí)行。應(yīng)用示例【例3-4】求x的絕對值。273.單分支結(jié)構(gòu)程序設(shè)計開始輸出x結(jié)束輸入數(shù)據(jù):x
x<0?x=-xYN#eg3_4.pyx=float(input(“pleaseinputanumber:”))ifx<0:x=-xprint(x)3.2分支(選擇)結(jié)構(gòu)程序設(shè)計表達(dá)式為真?語句塊YN…………284.雙分支結(jié)構(gòu)程序設(shè)計if……else……語句格式if表達(dá)式: 語句塊Aelse:
語句塊Bif……else……語句的執(zhí)行當(dāng)表達(dá)式的值為True或者其它等價值時(非空/0),執(zhí)行語句塊A,否則執(zhí)行語句塊B。也即任何一次執(zhí)行,只會選擇其中一個語句塊執(zhí)行,或者稱之為選擇其中一個分支執(zhí)行?!磉_(dá)式語句塊A語句塊B非空/0/True空/0/False……任何一次執(zhí)行只會選擇其中一個分支執(zhí)行3.2分支(選擇)結(jié)構(gòu)程序設(shè)計294.雙分支結(jié)構(gòu)程序設(shè)計【例3-5】請編程輸入學(xué)生分?jǐn)?shù),并且根據(jù)分?jǐn)?shù)判斷其是否通過考試。要求:如果成績大于等于60,則輸出”passed”,否則輸出”failed”。(1)根據(jù)IPO模式分析如下I(輸入數(shù)據(jù)):一個輸入數(shù)據(jù),學(xué)生的分?jǐn)?shù)。O(輸出結(jié)果):”passed”/”failed”字符串。P(處理過程(算法)):分?jǐn)?shù)大于等于60,即為passed,否則為failed。(2)算法設(shè)計(流程圖)開始輸出:passed輸出:failed結(jié)束score>=60?YN輸入分?jǐn)?shù)score3.2分支(選擇)結(jié)構(gòu)程序設(shè)計30(3)編寫程序#eg3_5.py#學(xué)生分?jǐn)?shù)通過與否判斷程序score=float(input(“請輸入分?jǐn)?shù):”))ifscore>=60:print(“passed”)else:print(“failed”)3.2分支(選擇)結(jié)構(gòu)程序設(shè)計315.多分支結(jié)構(gòu)程序設(shè)計多分支if語句格式if表達(dá)式A:
語句塊Aelif表達(dá)式B:
語句塊Belif表達(dá)式C:
語句塊C ……else:
語句塊N多分支if語句的執(zhí)行首先計算表達(dá)式A,如果其值為True或者其它等價值時,則執(zhí)行語句塊A;否則計算表達(dá)式B,如果其值為True或者其它等價值時,則執(zhí)行語句塊B;否則計算表達(dá)式C,如果其值為True或者其它等價值時,則執(zhí)行語句塊C;依次類推,如果所有表達(dá)式計算的結(jié)果都為False(空值/0),則執(zhí)行else后的語句塊N。3.2分支(選擇)結(jié)構(gòu)程序設(shè)計325.多分支結(jié)構(gòu)程序設(shè)計……表達(dá)式A語句塊A語句塊BFalseTrue表達(dá)式B表達(dá)式CFalseFalse語句塊C…………
語句塊NFalseTrueTrue……True3.2分支(選擇)結(jié)構(gòu)程序設(shè)計33【例3-6】請編程實現(xiàn)100分制成績轉(zhuǎn)換為A、B、C、D、E五級等級制成績。100分制與五級等級制的對應(yīng)關(guān)系為:90分及以上為A,80~89分為B,70~79分為C,60~69分為D,60分以下為E。(1)根據(jù)IPO模式分析如下I(輸入數(shù)據(jù)):一個輸入數(shù)據(jù),學(xué)生的成績。O(輸出結(jié)果):A、B、C、D、E中的一個。P(處理過程(算法)):90分及以上為A,80~89分為B,70~79分為C,60~69分為D,60分以下為E。(2)算法設(shè)計(流程圖)5.多分支結(jié)構(gòu)程序設(shè)計3.2分支(選擇)結(jié)構(gòu)程序設(shè)計345.多分支結(jié)構(gòu)程序設(shè)計score>=90?grade=’A’grade=’B’FalseTruescore>=80?
score>=70?
FalseFalsegrade=’C’score>=60?
grade=’E’FalseTrueTruegrade=’D’True輸入成績score開始輸出等級grade結(jié)束3.2分支(選擇)結(jié)構(gòu)程序設(shè)計355.多分支結(jié)構(gòu)程序設(shè)計(3)編寫程序#eg3_6.py#100分制與五級等級制成績的轉(zhuǎn)換score=float(input("請輸入成績:"))ifscore>=90:grade='A'elifscore>=80:grade='B'elifscore>=70:grade=‘C'elifscore>=60:grade=‘D'else:grade=‘E'
print("等級為:",grade)3.2分支(選擇)結(jié)構(gòu)程序設(shè)計366.多分支結(jié)構(gòu)應(yīng)用示例【例3-7】全國某等級考試的等級是這樣規(guī)定的,如果分?jǐn)?shù)是90及其以上的,則為優(yōu)秀,如果是大于等于60,小于90,則為合格,小于60,則為不合格。請編程,根據(jù)輸入的分?jǐn)?shù),確定考試的最后等級。(1)根據(jù)IPO模式分析如下I(輸入數(shù)據(jù)):一個輸入數(shù)據(jù),學(xué)生考試的分?jǐn)?shù)。O(輸出結(jié)果):優(yōu)秀、合格、不合格其中之一。P(處理過程(算法)):90分及以上為優(yōu)秀,60~89分為合格,60分以下為不合格。(2)算法設(shè)計(流程圖)3.2分支(選擇)結(jié)構(gòu)程序設(shè)計376.多分支結(jié)構(gòu)應(yīng)用示例score>=90?grade=’優(yōu)秀’grade=’合格’FalseTruescore>=60?
Falsegrade=’不合格’True輸入分?jǐn)?shù)score輸出等級結(jié)束開始3.2分支(選擇)結(jié)構(gòu)程序設(shè)計386.多分支結(jié)構(gòu)應(yīng)用示例(3)編寫程序#eg3_7.py#某等級考試成績判定score=float(input(“請輸入考試分?jǐn)?shù):"))ifscore>=90:grade="優(yōu)秀"elifscore>=60:grade="合格"else:grade="不合格"
print("等級為:",grade)3.2分支(選擇)結(jié)構(gòu)程序設(shè)計396.多分支結(jié)構(gòu)應(yīng)用示例3.2分支(選擇)結(jié)構(gòu)程序設(shè)計score>=60?grade=’不合格’grade=’優(yōu)秀’FalseTruescore>=90?
Falsegrade=’合格’True開始輸入分?jǐn)?shù)score輸出等級結(jié)束Python程序設(shè)計第三章開始Python程序設(shè)計3.1順序結(jié)構(gòu)程序設(shè)計3.2分支(選擇)結(jié)構(gòu)程序設(shè)計3.3循環(huán)結(jié)構(gòu)程序設(shè)計小結(jié)433.3循環(huán)結(jié)構(gòu)程序設(shè)計日常生活中,很多現(xiàn)象事件是重復(fù)出現(xiàn)的,如時鐘、地球自轉(zhuǎn)等,這些現(xiàn)象和事件是在不斷重復(fù),那么程序設(shè)計如何處理這些現(xiàn)象和事件呢?程序設(shè)計中通過編寫循環(huán)結(jié)構(gòu)程序來解決這類問題。如求1+2+3+……+100的和,或者是求1×2×3×……×n=n!,需要重復(fù)進(jìn)行加法、乘法操作。同比如時鐘程序,需要重復(fù)進(jìn)行加法和判斷等操作。Python中實現(xiàn)循環(huán)結(jié)構(gòu)的語句有while和for兩種語句。441.while語句while語句的格式while表達(dá)式:
語句塊while語句的執(zhí)行(1)計算表達(dá)式的值;(2)如果表達(dá)式的值為True(非空值/0),則執(zhí)行語句塊,執(zhí)行完后,轉(zhuǎn)(1);如果表達(dá)式的值為False(空/0),則結(jié)束while語句,執(zhí)行其后的語句。語句塊while后的語句……表達(dá)式FalseTrue3.3循環(huán)結(jié)構(gòu)程序設(shè)計452.while語句應(yīng)用示例【例3-9】編程求1+2+……+100。(1)根據(jù)IPO模式分析如下I(輸入數(shù)據(jù)):本題可以把求和的終止值100作為輸入,因此是一個輸入數(shù)據(jù)(注:可以沒有輸入數(shù)據(jù))。O(輸出結(jié)果):1個,所求的和。P(處理過程(算法)):重復(fù)進(jìn)行求和及加1的計算。(2)算法設(shè)計(流程圖)開始輸入求和的終止值end初始化循環(huán)變量rep=1rep<=end?初始化和值sum=0sum=sum+reprep=rep+1輸出和值sum結(jié)束FalseTrue3.3循環(huán)結(jié)構(gòu)程序設(shè)計462.while語句應(yīng)用示例(3)編寫程序#eg3_9.py#求1+2+……+100的和#輸入終止值end=int(input("請輸入求和的終止值:"))#初始化rep=1sum=0#求和,循環(huán)計算whilerep<=end:sum=sum+reprep=rep+1#輸出結(jié)果print("1+2+……+%d=%d"%(end,sum))3.3循環(huán)結(jié)構(gòu)程序設(shè)計473.循環(huán)結(jié)構(gòu)程序小結(jié)循環(huán)結(jié)構(gòu)程序,主要由三部分組成:循環(huán)條件即while后的表達(dá)式;重復(fù)執(zhí)行的部分,通常稱為循環(huán)體,本例中的sum=sum+rep和rep=rep+1語句;循環(huán)的初始化,本例中的rep=1和sum=0語句。循環(huán)結(jié)構(gòu)程序需要注意的是,循環(huán)的條件通常情況下要能使循環(huán)最后結(jié)束,否則進(jìn)入死循環(huán),一般是不期望的。當(dāng)然,死循環(huán)日常生活中也是有需要的,比如地球的自轉(zhuǎn),時間的計算,就需要永遠(yuǎn)的進(jìn)行著,而不能終止。比如:whileTrue: ……是一個死循環(huán)3.3循環(huán)結(jié)構(gòu)程序設(shè)計484.for語句for語句格式for<取值>in<序列或迭代對象>:
語句塊A[else:
語句塊B]for語句的執(zhí)行(1)從序列或迭代對象中依次取一個值;(2)執(zhí)行語句塊A;(3)不斷重復(fù)(1)和(2),直到序列或迭代對象全部取完,然后,如果有else部分,則執(zhí)行else語句塊B,執(zhí)行完后,結(jié)束for語句,執(zhí)行for之后的語句;如果沒有else部分,則結(jié)束for語句,執(zhí)行其后的語句。3.3循環(huán)結(jié)構(gòu)程序設(shè)計49#eg3_10.pyword=‘hello'forstrinword:print(str)else:print(“WarmlyWelcome!”)輸出結(jié)果:helloWarmlyWelcome!5.for語句應(yīng)用示例【例3-10】根據(jù)下列程序的執(zhí)行結(jié)果,理解for語句的執(zhí)行過程。3.3循環(huán)結(jié)構(gòu)程序設(shè)計505.for語句應(yīng)用示例【例3-11】用for語句編程求1+2+……+100。range()函數(shù)(1)range()是Python的內(nèi)建函數(shù)。(2)函數(shù)原型為:range([start,]stop,[step])(3)功能是:從start值開始,以step為步長,直到stop為止,依次產(chǎn)生序列即[start,start+step,start+2*sep,……start+(stop-start-step)//step*step](4)示例>>>foriinrange(1,5,1): print(i,end='') 1234>>>foriinrange(5,0,-1): print(i,end='')54321當(dāng)start省略時,表示為0,step省略時,表示為1>>>foriinrange(5): print(i,end='')01234注意序列不包含stop如果start=0,stop=9,setp=2,則start不能省略,否則變?yōu)閞ange(9,2),程序?qū)]有輸出結(jié)果。即foriinrange(5,2): print(i,end='')3.3循環(huán)結(jié)構(gòu)程序設(shè)計51#eg3_11.py#用for語句實現(xiàn)的1+2+……+100的程序end=int(input("請輸入計算的終止值:"))sum=0forrepinrange(end+1):sum=sum+repprint("1+2+……+%d=%d"%(end,sum))5.for語句應(yīng)用示例3.3循環(huán)結(jié)構(gòu)程序設(shè)計525.for語句應(yīng)用示例【例3-12】觀察下列程序的輸出結(jié)果,理解列表元素的循環(huán)訪問。#eg3_12.pylist=['python','java','c','c#','delphi']forwordinlist:print(word)print('*******')foriinrange(len(list)):print(list[i])輸出結(jié)果為:pythonjavacc#delphi*******pythonjavacc#delphi3.3循環(huán)結(jié)構(gòu)程序設(shè)計535.for語句應(yīng)用示例【例3-13】觀察下列程序的輸出結(jié)果,理解字典元素的循環(huán)訪問。#eg3_13.py#字典的訪問dict={1:'python',2:'java',3:'c',4:'c#',5:'delphi'}forsindict:print(s,’:’,dict[s])輸出結(jié)果為:1:python2:java3:c4:c#5:delphi3.3循環(huán)結(jié)構(gòu)程序設(shè)計54dict={1:'python',2:'java',3:'c',4:'c#',5:'delphi'}print('**鍵**')forsindict.keys():print(s,dict[s])print('**值**')forvaluesindict.values():print(values)print('**鍵、值對**')fors,valindict.items():print(s,val)5.for語句應(yīng)用示例字典的多種訪問方式請自行寫出輸出結(jié)果3.3循環(huán)結(jié)構(gòu)程序設(shè)計556.break語句break語句沒有語句體,其功能是結(jié)束當(dāng)前循環(huán)語句的執(zhí)行。forletterin‘hello’:ifletter==’l’:breakprint(letter)print(“end”)其輸出結(jié)果為:heend3.3循環(huán)結(jié)構(gòu)程序設(shè)計567.continue語句continue語句也是沒有語句體,其功能是結(jié)束當(dāng)次循環(huán)的執(zhí)行,即跳過當(dāng)次循環(huán)語句塊中剩余的語句,繼續(xù)進(jìn)行下一輪的循環(huán)。k=4whilek>0:k=k-1ifk==2:continueprint(k)print(“end”)輸出結(jié)果為:310End3.3循環(huán)結(jié)構(gòu)程序設(shè)計578.循環(huán)結(jié)構(gòu)程序精選案例【例3-14】請給英語老師編一個程序,求某次考試后的平均分、最高分、最低分。(1)根據(jù)IPO模式分析如下I(輸入數(shù)據(jù)):全班同學(xué)某次的考試成績,人數(shù)不定,用列表存儲成績。O(輸出結(jié)果):三個,平均分,最高分,最低分。P(處理過程(算法)):見(2)。(2)算法設(shè)計(自然語言)A1.輸入全班考試成績,以”-1”作為輸入結(jié)束標(biāo)志(通常成績不會是負(fù)數(shù));A2.求總分及總?cè)藬?shù);A3.求平均分;A4.求最高分和最低分;A5.輸出結(jié)果。3.3循環(huán)結(jié)構(gòu)程序設(shè)計588.循環(huán)結(jié)構(gòu)程序精選案例(3)編寫程序#eg3_14.py#計算某次考試成績的平均分、最高分、最低分#輸入成績,以-1結(jié)束,成績存在列表中score=[]whileTrue:g=float(input("請輸入成績(0~100),以-1作為結(jié)束標(biāo)志:"))ifg==-1:breakelse:score.append(g)#計算平均分sum=0forginscore:sum=sum+gnum=len(score)average=sum/num#計算最高分和最低分max=0min=100forginscore:ifg>max:max=gelse:ifg<min:min=g#輸出結(jié)果print("平均分為:%.2f"%(average))print("最高分為:%.2f"%(max))print("最低分為:%.2f"%(min))3.3循環(huán)結(jié)構(gòu)程序設(shè)計598.循環(huán)結(jié)構(gòu)程序精選案例
思考:如何用Python的內(nèi)置函數(shù)sum(),max(),min(),len()簡化代碼編寫?3.3循環(huán)結(jié)構(gòu)程序設(shè)計608.循環(huán)結(jié)構(gòu)程序精選案例【例3-15】請編程判斷一個整數(shù)是否為素數(shù)。(1)根據(jù)IPO模式分析如下I(輸入數(shù)據(jù)):一個整數(shù)。O(輸出結(jié)果):是或者不是。P(處理過程(算法))
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- CCAA - 2015年03月建筑施工領(lǐng)域?qū)I(yè)答案及解析 - 詳解版(70題)
- 河北省保定市六校聯(lián)考2025-2026學(xué)年高一上學(xué)期1月期末考試語文試題(含答案)
- 2025-2026學(xué)年學(xué)年度第一學(xué)期期末質(zhì)量監(jiān)測高二英語科試題(含答案)
- 養(yǎng)老院消防演練制度
- 養(yǎng)老院定期體檢制度
- 智能垃圾桶生產(chǎn)建設(shè)項目環(huán)評報告
- 老年終末期跌倒預(yù)防的多靶點干預(yù)策略
- 冷空氣影響期間交通安全管理規(guī)定
- 2025年阜陽潁上縣城鄉(xiāng)水務(wù)有限公司招聘考試真題
- 海鹽采收工安全宣傳水平考核試卷含答案
- 彩盒成品檢驗標(biāo)準(zhǔn)
- 酒店治安安全管理制度范本
- 塑膠-施工方案
- DB32∕T 4700-2024 蓄熱式焚燒爐系統(tǒng)安全技術(shù)要求
- 2025-2030光器件行業(yè)人才缺口現(xiàn)狀與高端人才培養(yǎng)體系建設(shè)報告
- 物業(yè)入戶維修標(biāo)準(zhǔn)及流程
- GB/T 19839-2025工業(yè)燃油燃?xì)馊紵魍ㄓ眉夹g(shù)條件
- 生物濾池除臭裝置設(shè)計計算實例
- 銀行資產(chǎn)池管理辦法
- 選煤廠安全規(guī)程培訓(xùn)考核試題帶答案
- 人音版七年級音樂上冊說課稿:2.4 藍(lán)色的探戈
評論
0/150
提交評論