




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第5章循環(huán)結(jié)構(gòu)目錄5.1while循環(huán)結(jié)構(gòu)5.2for循環(huán)結(jié)構(gòu)5.3循環(huán)控制語句5.4循環(huán)的嵌套5.5循環(huán)結(jié)構(gòu)程序舉例5.1while循環(huán)結(jié)構(gòu)while循環(huán)結(jié)構(gòu)while循環(huán)結(jié)構(gòu)是根據(jù)條件來判斷是否需要繼續(xù)重復執(zhí)行語句塊,故可以稱為條件循環(huán)。無論循環(huán)的次數(shù)是否預知,都可以使用while語句來循環(huán)執(zhí)行語句塊。while語句包括兩種形式:基本while語句;擴展while語句?;緒hile語句先計算條件表達式,再執(zhí)行循環(huán)體,故循環(huán)體有可能一次也不被執(zhí)行若條件表達式永為True,則循環(huán)將無限次的執(zhí)行下去(俗稱死循環(huán))while條件表達式:
語句塊條件表達式結(jié)果等價于True,執(zhí)行語句塊,并返回條件處條件表達式結(jié)果等價于False,則循環(huán)結(jié)束多數(shù)為比較表達式或邏輯表達式但也可以是其他計算結(jié)果的表達式條件表達式后必須加冒號所有語句行都應向右縮進對齊并保持一致的縮進方式【例5-1】求累加和編寫程序求1+2+3+…+100的值。步驟:Step1:初始化變量,i=1,sum=0。i表示被加數(shù)1~100,sum存放1~100的累加值。Step2:判斷i<=100的值是否為真,若為真,將i累加到sum,然后i加1。Step3:重復Step2直到i<=100為假,退出循環(huán)。Step4:輸出累加值sum?!纠?-1】求累加和#1. i=1#2. sum=0#3. whilei<=100:#4. sum+=i#5. i=i+1#6. print(sum)【例5-2】求階乘編寫程序,求令1*2*3*…n>=100000成立的最小n值。Step1:定義整型變量i,用于存放乘數(shù),定義變量r存放乘積。Step2:初始化變量,i=1,r=1。Step3:判斷r<100000的值是否為真,若為真,轉(zhuǎn)Step4,若為假,轉(zhuǎn)Step6。Step4:將i加1,然后r=r*i。Step5:轉(zhuǎn)Step3。Step6:循環(huán)結(jié)束,輸出最后的乘數(shù)i?!纠?-2】求階乘#1. i=1#2. r=1#3. whiler<=100000:#4. r*=i#5. i=i+1#6. print(i)【例5-3】輸入一個整數(shù),求它的各位數(shù)字之和。#1. n=int(input())#2. sum=0#3. whilen:#4. r=n%10#5. n=n//10#6. sum+=r#7. print('sum=',sum)擴展while語句while條件表達式:
語句塊1else:
語句塊2當條件表達式值為False則循環(huán)結(jié)束,且執(zhí)行else后的語句塊2若執(zhí)行語句塊1中的break語句結(jié)束循環(huán),則不執(zhí)行語句塊2else后必須加冒號所有的語句塊保持一致的縮進方式【例5-2】求階乘#1. i=1#2. r=1#3. whiler<=100000:#4. r*=i#5. i=i+1#6. else:#7. print(i)5.2for循環(huán)結(jié)構(gòu)for循環(huán)結(jié)構(gòu)for循環(huán)結(jié)構(gòu)中,循環(huán)的控制需要有序列或可迭代對象參與,循環(huán)過程中對序列或可迭代對象中的元素逐一處理,故又稱為遍歷循環(huán)。for循環(huán)結(jié)構(gòu)適用的情況:循環(huán)次數(shù)已知;需要遍歷處理Python的序列結(jié)構(gòu)或可迭代對象中的每個元素。for語句若需按指定次數(shù)循環(huán),可用range函數(shù)產(chǎn)生range對象來配合控制循環(huán)for循環(huán)變量in遍歷結(jié)構(gòu):
語句塊1[else:
語句塊2]從遍歷結(jié)構(gòu)中逐一提取元素,放入循環(huán)變量循環(huán)次數(shù)就是元素的個數(shù)可選的else部分,執(zhí)行方式和while語句類似必須加冒號所有的語句塊保持一致的縮進方式range函數(shù)的格式>>>range(5)range(0,5)>>>range(3,10,3)range(3,10,3)格式1:range(stop)生成從0開始到stop-1的連續(xù)整數(shù),返回range對象格式2:range(start,stop[,step])生成從start開始到stop-1的、間隔為step的整數(shù),返回range對象關(guān)于for循環(huán)的循環(huán)變量循環(huán)變量是序列結(jié)構(gòu)或可迭代對象的當前元素值的復制修改循環(huán)變量的值,無法改變序列結(jié)構(gòu)和可迭代對象的值循環(huán)變量的變化次數(shù)是恒定不變的#1. x=[1,2]#2. foriinx:#3. print(i,end='')#4. i=i-3#5. print(i)#6. print(x)for循環(huán)中序列結(jié)構(gòu)的元素減少#1. x=[1,2,3,4]#2. foriinx:#3. print(i,end='')#4. print(x.pop())#彈出最后的元素#5. print(x)#6. print('Theloopend!')#7. print(x)for循環(huán)中序列結(jié)構(gòu)的元素增加(1)#1. x=[1,2]#2. foriinx:#3. print(i,end='')#4. ifi!=5:x.append(5) #列表原地增加元素#5. print(x)#6. print('Theloopend!')#7. print(x)for循環(huán)中序列結(jié)構(gòu)的元素增加(2)#1. x=[1,2]#2. foriinx:#3. print(i,end='')#4. ifi!=5:x=x+[5]
#列表非原地增加元素#5. print(x)#6. print('Theloopend!')#7. print(x)【例5-4】用for語句求1+2+3+…+99+100。#1. sum=0#2. foriinrange(1,101):#range()函數(shù)產(chǎn)生的數(shù)不包括101#3. sum+=i#4. print(sum)運行程序,結(jié)果如下:5050【例5-5】用for語句求一個整數(shù)的各位數(shù)字之和。
#1. n=input("請輸入一個整數(shù):")#2. sum=0#3. foriinn: #4. sum+=int(i)#5. print(sum)請輸入一個整數(shù):382↙13【例5-6】編寫程序找出所有三位水仙花數(shù)。所謂水仙花數(shù)是指其各位數(shù)字的立方和等于該數(shù)本身。例如,153=13+53+33,所以153是水仙花數(shù)。#1. foriinrange(100,1000):#2. a,temp=divmod(i,100)#3. b,c=divmod(temp,10)#4. ifa**3+b**3+c**3==i:#5. print(i)5.3循環(huán)控制語句5.3.1break語句循環(huán)體中使用break語句,可以跳出包含break語句的那層循環(huán),從而提前結(jié)束該循環(huán)。跳出循環(huán)后,繼續(xù)執(zhí)行當前層循環(huán)的后續(xù)語句?!纠?-7】輸入一個正整數(shù)n,判斷它是否為素數(shù)。素數(shù)就是只能被1和自身整除的數(shù)。判斷n是否為素數(shù),可以按素數(shù)的定義進行判斷,用n依次除以2到n-1之間的所有數(shù),只要發(fā)現(xiàn)有一個數(shù)能夠被n整除,馬上可以結(jié)束循環(huán),判定n不是素數(shù)。如果沒有一個能夠被n整除的數(shù),則n為素數(shù)?!纠?-7】輸入一個正整數(shù)n,判斷它是否為素數(shù)。#1. n=int(input('請輸入一個整數(shù):'))#2. foriinrange(2,n):#3. ifn%i==0:#4. print(n,'不是素數(shù)')#5. break#6. else:#7. print(n,'是素數(shù)')5.3.2continue語句循環(huán)體中使用continue語句,可以提前結(jié)束本次循環(huán)體不再執(zhí)行本語句后循環(huán)體中的其他語句跳回到循環(huán)結(jié)構(gòu)首行,重新判斷循環(huán)條件【例5-8】改用continue找所有三位水仙花數(shù)。#1. foriinrange(100,1000):#2. a,temp=divmod(i,100)#3. b,c=divmod(temp,10)#4. ifa**3+b**3+c**3!=i:#5. continue#6. print(i)5.3.3pass語句pass語句又稱空語句,執(zhí)行pass語句時不做任何操作用pass語句保證控制結(jié)構(gòu)的完整性。模塊化設計時,用pass語句占位。5.4循環(huán)的嵌套循環(huán)嵌套一個循環(huán)體內(nèi)的語句中包含另一個循環(huán)語句,稱為循環(huán)的嵌套。一個循環(huán)嵌套中包括外層循環(huán)和內(nèi)層循環(huán)。內(nèi)層循環(huán)可以繼續(xù)循環(huán)嵌套,即為多層循環(huán)。較常用:雙重循環(huán)和三重循環(huán)。循環(huán)嵌套的注意點外循環(huán)每執(zhí)行一次,內(nèi)循環(huán)就要執(zhí)行一個完整的循環(huán)可以使用不同的循環(huán)語句相互嵌套,來解決復雜問題;使用break語句,只能跳出break語句所在那層的循環(huán);嵌套循環(huán)中注意語句的縮進,錯誤的縮進會使語句屬于錯誤的循環(huán)層【例5-9】編制程序,打印如下九九乘法表。程序使用雙重循環(huán),定義兩個循環(huán)變量i和ji用于控制外循環(huán),即控制打印九九乘法表的行數(shù)j用于控制內(nèi)循環(huán),即控制九九乘法表每一行打印的內(nèi)容【例5-9】打印如下九九乘法表。#1. foriinrange(1,10):#2. forjinrange(1,i+1):#3. s=str(j)+'*'+str(i)+'='+str(i*j)#4. print(s,end='')#5. print()【例5-10】求100以內(nèi)的全部素數(shù)。將找到的素數(shù)按每行5個的形式輸出在屏幕上程序使用二重循環(huán),定義兩個循環(huán)變量i和ji用于控制外循環(huán),依次判斷2到99是否為素數(shù)j用于控制內(nèi)循環(huán),判斷i是否能被j整除?!纠?-10】求100以內(nèi)的全部素數(shù)。#1. n=0#2. foriinrange(2,100):#3. forjinrange(2,i):#4. ifi%j==0:#5. break#6. else:#7. print(i,end='\t')#8. n+=1
#n用來記錄是否需要換行,每發(fā)現(xiàn)一個素數(shù)n+1#9. ifn==5: #若n值為5則換行,并將n清零后,重新計數(shù)#10. n=0#11. print()5.5循環(huán)結(jié)構(gòu)程序舉例【例5-11】用歐幾里德算法求兩個數(shù)的最大公約數(shù)歐幾里得算法假設用gcd(m,n)表示m和n的最大公約數(shù),則gcd(m,n)必定等于gcd(n,m%n),直到m%n的結(jié)果為0。【例5-11】用歐幾里德算法求兩個數(shù)的最大公約數(shù)#1. m,n=eval(input("請輸入一對整數(shù)m,n:"))#2. whilen:#3. m,n=n,m%n#4. print(m)【例5-12】猜數(shù)游戲隨機生成20以內(nèi)的整數(shù),用戶輸入整數(shù)猜測該數(shù),程序提示輸入數(shù)是偏大偏小還是正確。本題要用到隨機生成數(shù),需要先導入模塊random,并利用其中的randint()函數(shù)生成指定范圍的隨機整數(shù)?!纠?-12】猜數(shù)游戲#1. importrandom#2. goal=random.randint(1,20)#3. x=int(input('你猜:'))#4. n=1#5. whilex!=goal:#6. n+=1#7. ifx>goal:#8. x=int(input('偏大!再猜:'))#9. elifx<goal:#10. x=int(input('偏?。≡俨拢?))#11. print('恭喜你,猜對了!共猜了{}次'.format(n))【例5-13】買房計劃2011年張三年收入為8萬元
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級上冊數(shù)學教學設計-第三單元第1課時 因數(shù)與倍數(shù) 北師大版
- 一年級下冊數(shù)學教案-綜合實踐 趣味拼擺| 青島版(五四學制)
- 學習2025年雷鋒精神六十二周年主題活動實施方案 (3份)-54
- 2025年河南測繪職業(yè)學院單招職業(yè)適應性測試題庫帶答案
- 2025年廣西安全工程職業(yè)技術(shù)學院單招職業(yè)技能測試題庫含答案
- 2025年廣東金融學院單招職業(yè)適應性測試題庫完整
- 2025年貴州航天職業(yè)技術(shù)學院單招職業(yè)技能測試題庫一套
- 2025福建省安全員考試題庫及答案
- 2025年度幼兒園教職工被辭退勞動權(quán)益保護合同
- 2025年度幼兒園實習教師培養(yǎng)與就業(yè)服務協(xié)議
- 二年級下冊計算小能手帶答案
- 2024年臨滄市工業(yè)產(chǎn)業(yè)發(fā)展集團限公司招聘2名公開引進高層次人才和急需緊缺人才筆試參考題庫(共500題)答案詳解版
- 2023年3月云南專升本大??肌堵糜螌W概論》試題及答案
- 一年級趣味數(shù)學幾和第幾
- 2024年西安電力高等??茖W校單招職業(yè)技能測試題庫及答案解析
- 2024年中國科學技術(shù)大學創(chuàng)新班物理試題答案詳解
- 方案優(yōu)缺點對比表模板
- 中職數(shù)學基礎(chǔ)模塊上冊學業(yè)水平考試第四章三角函數(shù)單元測試及參考答案
- 數(shù)據(jù)真實性承諾書
- 山東信息職業(yè)技術(shù)學院單招職業(yè)技能測試參考試題庫(含答案)
- 充電站風險管理的法律法規(guī)研究
評論
0/150
提交評論