Python程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計(第7次課)2.ppt_第1頁
Python程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計(第7次課)2.ppt_第2頁
Python程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計(第7次課)2.ppt_第3頁
Python程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計(第7次課)2.ppt_第4頁
Python程序設(shè)計 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計(第7次課)2.ppt_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計算機(jī)編程導(dǎo)論,本章主講 趙家剛,第4章 循環(huán)結(jié)構(gòu) 程序設(shè)計2,計算機(jī)編程導(dǎo)論,4.3.3 while語句用于無限循環(huán),要點(diǎn): 循環(huán)結(jié)構(gòu)理解 二重循環(huán)結(jié)構(gòu)理解 二重循環(huán)的應(yīng)用,計算機(jī)編程導(dǎo)論,4.3.3 while語句用于無限循環(huán),當(dāng)while語句的“表達(dá)式”永遠(yuǎn)不會為布爾假時,循環(huán)將永遠(yuǎn)不會結(jié)束,形成無限循環(huán),也稱死循環(huán)。 使用while語句構(gòu)成無限循環(huán)的格式通常為: while True: 循環(huán)體 可以在循環(huán)體內(nèi)使用break語句強(qiáng)制結(jié)束死循環(huán)。,計算機(jī)編程導(dǎo)論,【例4-5】使用無限循環(huán)的方法編程實(shí)現(xiàn)例4-2。,a = input(請輸入字符,如果輸入 # 號則結(jié)束輸入操作: ) whil

2、e True: print(您輸入的字符是:, a) a = input(請輸入字符,如果輸入 # 號則結(jié)束輸入操作: ) if a = #: break,程序:,計算機(jī)編程導(dǎo)論,【例4-6】求以下表達(dá)式的值,其中n值從鍵盤輸入。參考值:當(dāng)n = 11時,s = 1.833333 。,計算機(jī)編程導(dǎo)論,【分析】 (1)以上問題屬于數(shù)學(xué)中的級數(shù)求和問題,是使用循環(huán)結(jié)構(gòu)解決的一類常見問題。 (2)級數(shù)求和問題編程的重點(diǎn)在于通過觀察表達(dá)式的規(guī)律,分析每次循環(huán)都要完成的事件。通常將這些事件進(jìn)行局部分解,稱為“通式”。,該題的通式有以下幾個: (1)分母的通式: (2)變量i的通式: (3)當(dāng)前項(xiàng)的通式:

3、 (4)求和的通式:,mu = mu + i,i = i + 1,t = 1.0 / mu,s = s + t,計算機(jī)編程導(dǎo)論,i=1 mu = 0 s = 0.0 n = input(請輸入n值: ) #或用書上的代碼 while i = n: #判斷是否計算到表達(dá)式的最后一項(xiàng) mu = mu + i #求分母的通式 i += 1 # i 自增的通式 t = 1.0 / mu #求當(dāng)前項(xiàng)的通式 s = s + t #求和的通式 print s = , s #循環(huán)結(jié)束后,打印總和,程序:,提問:,(1)變量 i、mu、s 的初值只能是 1、0、0.0 嗎? (2)循環(huán)體內(nèi)語句的先后順序可以隨意

4、調(diào)換嗎?,計算機(jī)編程導(dǎo)論,【例4-7】 通過以下表達(dá)式求的近似值,當(dāng)某項(xiàng)小于0.00000001(即1e-8)時停止循環(huán)。,計算機(jī)編程導(dǎo)論,分析: 該題使用循環(huán)結(jié)構(gòu)來解決,只有當(dāng)某一項(xiàng)小于1e-8時才停止迭代,因此循環(huán)次數(shù)是不確定的。觀察表達(dá)式中相鄰兩項(xiàng)的規(guī)律是前一項(xiàng)的分子乘以1個整數(shù)值“i”可得后一項(xiàng)的分子,而這個整數(shù)值“i”隨著循環(huán)次數(shù)由1遞增到n;前一項(xiàng)的分母乘以“2*i+1”可得后一項(xiàng)的分母。該題的通式有以下幾個: (1)分子的通式:zi = zi * i (2)分母的通式:mu = mu * (2 * i + 1) (3)變量i的通式:i = i + 1 (4)當(dāng)前項(xiàng)的通式:t =

5、zi*1.0/mu (5)求和通式:s=s+t,計算機(jī)編程導(dǎo)論,程序: #Exp4_7.py i = 1 zi = 1.0 mu = 1.0 t = 1.0 s = 0.0 while t = 1e-8: s = s + t zi = zi * i mu = mu * ( 2 * i + 1) t = zi * 1.0 / mu i += 1 print PAI = , (2 * s),計算機(jī)編程導(dǎo)論,【例4-8】求1 100之間能被7整除,但不能同時被5整除的所有整數(shù) 。,【分析】 (1)本題需要對1 100范圍內(nèi)的所有數(shù)一一進(jìn)行判斷。 (2)本題的循環(huán)次數(shù)確定是100次。 (3)在每次循環(huán)

6、過程中需要用 if 語句進(jìn)行條件判斷。因此本題是循環(huán)嵌套選擇的結(jié)構(gòu)。,計算機(jī)編程導(dǎo)論,i = 1 # i 既是循環(huán)變量,同時又是被判斷的數(shù) print(1100之間能被7整除,但不能同時被5整除的所有數(shù)是:) while i = 100: #判斷循環(huán)是否結(jié)束 if i % 7 = 0 and i % 5 != 0: #判斷本次的i是否滿足條件 print i, t #打印滿足條件的i i += 1 #每次循環(huán) i 應(yīng)自增,程序:,提問:,請問語句“i += 1”可以和語句 “print i, t ”對齊嗎?,計算機(jī)編程導(dǎo)論,【例4-9】輸出“水仙花數(shù)”。所謂水仙花數(shù)是指1個3位的十進(jìn)制數(shù),其各

7、位數(shù)字的立方和等于該數(shù)本身。例如:153是水仙花數(shù),因?yàn)?53 = 13 + 53 + 33 。,【分析】 (1)本題需要對100 999范圍內(nèi)的所有數(shù)一一進(jìn)行判斷。 (2)本題的變量 i 既是循環(huán)變量,同時也是被判斷的數(shù)。 (3)每次循環(huán)過程中需要用 if 語句進(jìn)行條件判斷。因此本題也是循環(huán)嵌套選擇的結(jié)構(gòu)。,計算機(jī)編程導(dǎo)論,提問:,變量 i 是一個三位整數(shù),例如 i = 123 (1)請寫出分離 i 的百位數(shù)的表達(dá)式。 (2)請寫出分離 i 的十位數(shù)的表達(dá)式。 (3)請寫出分離 i 的個位數(shù)的表達(dá)式。,i = 100 print(所有的水仙花數(shù)是:) while i = 999: #判斷循環(huán)

8、是否結(jié)束 bai = int(i / 100) #分離 i 的百位數(shù) shi = int(i % 100) / 10) #分離 i 的十位數(shù) ge = int(i % 10)#分離 i 的個位數(shù) if bai * 3 + shi * 3 + ge * 3 = i: #判斷條件 print i #打印水仙花數(shù) i += 1 #變量 i 自增,程序:,計算機(jī)編程導(dǎo)論,4.4 for語句,for 取值 in 序列: 循環(huán)體,循環(huán)體,Python提供的另一個循環(huán)機(jī)制是for語句,它提供了Python中最強(qiáng)大的循環(huán)結(jié)構(gòu)。Python中的for語句與傳統(tǒng)的for語句不太一樣,它接受可迭代對象(例如序列或迭

9、代器)作為其參數(shù),每次迭代其中的一個元素。,計算機(jī)編程導(dǎo)論,列表、元組、字符串都是序列。序列類型有著相同的訪問模式:它的每一個元素可以通過指定一個偏移量的方式得到;而多個元素可以通過切片操作的方式得到。 序列操作可以通過很多內(nèi)建函數(shù)來實(shí)現(xiàn),比如求序列長度len( );求最大值max( ) ;最小值min( ) ;求和sum( );排序sorted( ) 等,以上這些內(nèi)建函數(shù)的實(shí)現(xiàn)都離不開循環(huán)結(jié)構(gòu)。,4.3.1 for語句用于序列類型,計算機(jī)編程導(dǎo)論,【例4-10】創(chuàng)建1個由分?jǐn)?shù)構(gòu)成的列表,求出所有分?jǐn)?shù)的平均分。,方法一:使用Python的內(nèi)建函數(shù)sum( )求和,然后再求平均分。, score

10、 = 70, 90, 78, 85, 97, 94, 65, 80 score 70, 90, 78, 85, 97, 94, 65, 80 aver = sum(score) / 8.0 aver 82.375,計算機(jī)編程導(dǎo)論,方法二:使用for語句,循環(huán)計算列表元素之和。,【分析】 (1)以上列表score有8個元素,這些元素的序列索引范圍是“0 7”。 (2)本題用到成員測試運(yùn)算符“in”,如果成員在序列中,測試結(jié)果為“True”,否則為“False”。 (3)本題用到計算序列長度的內(nèi)建函數(shù)len( )。 (4)本題用到內(nèi)建函數(shù)range( ),range( )函數(shù)的完整語法要求提供2個

11、或3個整型參數(shù): range(start, end, step),計算機(jī)編程導(dǎo)論,score = 70, 90, 78, 85, 97, 94, 65, 80 print 所有的分?jǐn)?shù)值是: print score #打印列表 sum = 0 for i in range(len(score): print scorei, sum += scorei #循環(huán)體對列表元素求和 aver = sum / 8.0 #循環(huán)之后,求平均值 print naver = , aver,程序:,計算機(jī)編程導(dǎo)論,循環(huán)的嵌套是指在一個循環(huán)中又包含另外一個完整的循環(huán),即循環(huán)體中又包含循環(huán)語句。while循環(huán)和for循

12、環(huán)可以相互嵌套。 循環(huán)嵌套的執(zhí)行過程是:一次外循環(huán)對應(yīng)著完整的一輪內(nèi)循環(huán)。,利用for語句實(shí)現(xiàn)雙層循環(huán)嵌套,計算機(jī)編程導(dǎo)論,【例4-13】使用for循環(huán)的嵌套結(jié)構(gòu)打印9-9乘法表,【分析】9-9乘法表由9行組成,每行的列數(shù)有規(guī)律地遞增。通過觀察可以看出,表達(dá)式“X * Y = Z”中的X是內(nèi)循環(huán)變量j的取值,Y是外循環(huán)變量i的取值,Z是X乘以Y的結(jié)果。,計算機(jī)編程導(dǎo)論,for i in range(1, 10, 1): #控制行 for j in range(1, i+1, 1): #控制列 print i, *, j, =, i*j, t print n #每行末尾的換行,程序:,計算機(jī)編程

13、導(dǎo)論,【課堂練習(xí)】使用for循環(huán)的嵌套結(jié)構(gòu)編程,打印以下圖形。,(1)矩形,(2)直角三角形,(3)正三角形,計算機(jī)編程導(dǎo)論,Python提供了一條提前結(jié)束循環(huán)的語句break語句。 當(dāng)在循環(huán)過程中,某個條件被觸發(fā)(一般通過if語句檢查),需要立即停止循環(huán)時使用。break語句可以用在while和for循環(huán)中。,4.4 break語句,計算機(jī)編程導(dǎo)論,【例4-15】求200以內(nèi)能被17整除的最大正整數(shù)。,【分析】這個查找過程將以遞減的方式遍歷200至1之間的整數(shù),當(dāng)找到第1個能被17整除的數(shù)時,循環(huán)過程立即停止,后續(xù)還沒有遍歷的數(shù)將無需再進(jìn)行判斷,因此可以使用break語句將循環(huán)提前終止。,f

14、or i in range(200, 1, -1): if i % 17 = 0: break print(200以內(nèi)能被17整除的最大數(shù)是:, i),程序:,計算機(jī)編程導(dǎo)論,【例4-16】從鍵盤輸入一個整數(shù),判斷該數(shù)是否為素數(shù)。,計算機(jī)編程導(dǎo)論,#Exp4_16.py x=input(請輸入1個整數(shù):) for i in range(2, x, 1): if x % i=0: break if i=x-1: print x, 是素數(shù) elif ix-1: print x, 不是素數(shù),計算機(jī)編程導(dǎo)論,4.6 continute語句,continue語句的作用是終止當(dāng)前循環(huán),并忽略continue之后的語句,然后回到循環(huán)的頂端,繼續(xù)執(zhí)行下一次循環(huán)。,計算機(jī)編程導(dǎo)論,【例4-17】 求200以內(nèi)能被17整除的所有正整數(shù),并統(tǒng)計滿足條件的數(shù)的個數(shù)。,#Exp4_17_2.py s=0 print 200以內(nèi)能被17整除的所有數(shù)是: for i in range(1, 201,

溫馨提示

  • 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

提交評論