




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
~1~第三章編程邏輯目錄程序流程圖順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)實(shí)例:編程邏輯應(yīng)用本章習(xí)題-2-編程邏輯編程邏輯:一是順序執(zhí)行;二是條件執(zhí)行;三是循環(huán)執(zhí)行。程序流程圖-3-順序結(jié)構(gòu)程序的順序結(jié)構(gòu)是指程序從上至下按行依次按行執(zhí)行。語法結(jié)構(gòu):<語句塊1>
...
<語句塊N>在<順序結(jié)構(gòu)的語句塊>中,其中的變量的作用域是自其聲明之后的代碼段-4-分支結(jié)構(gòu)程序有一個(gè)或多個(gè)條件分支,滿足某一條件,則執(zhí)行該條件對(duì)應(yīng)的分支,其他不滿足條件的分支,不予執(zhí)行。語法結(jié)構(gòu):if<條件1>:#若<條件1>滿足,則執(zhí)行<語句塊1>
<語句塊1>
...
elif<條件i>:#否則,但滿足<條件i>,則執(zhí)行<語句塊i>
<語句塊i>
...
else:#若以上所有條件均不滿足,則執(zhí)行<語句塊n>
<語句塊n>形成判斷條件最常用的方式是采用關(guān)系操作符,包括<、<=、>、>=、==和!=。在實(shí)際編程中,分支結(jié)構(gòu)中的條件個(gè)數(shù)可以是1個(gè)或多個(gè)。注意:符號(hào)=表示賦值,符號(hào)==表示判斷符號(hào)前后兩個(gè)操作數(shù)是否相等。-5-舉例:中國歷史年代表在中國歷史中,隋、唐、五代十國的年代表如下:隋:581-618唐 :618-907五代十國:907-960給定年份判斷其所處朝代的代碼,主要采用分支結(jié)構(gòu),其流程如下圖所示-6-歷史朝代判別算法代碼如下:year_str=input("請(qǐng)輸入歷史年份:")year=int(year_str)dynasty=''ifyear<581:dynasty='隋之前朝代'elifyear<618:dynasty='隋朝'elifyear<907:dynasty='唐朝'elifyear<960:dynasty='五代十國'else:dynasty='五代十國之后朝代'print('公元{0}年是{1}'.format(year,dynasty))-7-match和casePython3.10引入了模式匹配的新功能,這是一種類似于其他編程語言中switch-case語句的結(jié)構(gòu),但功能更強(qiáng)大和靈活。在Python中,這個(gè)特性通過match和case關(guān)鍵字實(shí)現(xiàn),它根據(jù)對(duì)象的結(jié)構(gòu)和內(nèi)容來進(jìn)行分支處理。以下是一個(gè)使用模式匹配的示例:defhandle_message(message):
matchmessage:
case{"type":"text","content":text}:
print(f"Textmessage:{text}")
case{"type":"image","content":image_path}:
print(f"Imagemessagewithpath:{image_path}")
case{"type":"video","duration":duration}:
print(f"Videomessageofduration{duration}seconds")
case_:
print("Unknownmessagetype")
message1={"type":"text","content":"HelloWorld"}
message2={"type":"image","content":"/path/to/image.jpg"}
message3={"type":"video","duration":120}
handle_message(message1)
handle_message(message2)
handle_message(message3)-8-循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是指當(dāng)程序在只有個(gè)別變量變化的情況下,需要反復(fù)執(zhí)行相似邏輯,直到滿足某一個(gè)條件后,退出循環(huán)。在Python語言中,一般有兩種實(shí)現(xiàn)方法:for循環(huán)和while循環(huán)。前者為遍歷循環(huán),而后者為條件循環(huán)-9-for循環(huán)for循環(huán)是一種遍歷循環(huán),即遍歷一個(gè)序列中的每一項(xiàng),迭代執(zhí)行相應(yīng)代碼。這里的序列可理解為其中的元素按某一順序排列成的一個(gè)集合,比如從0到99的自然數(shù)組成的集合。for循環(huán)語法結(jié)構(gòu):for<循環(huán)變量>in<遍歷集合>:
<語句塊1>
else:#該分支不常用,一般可刪除本句和<語句塊2>
<語句塊2>舉例:foriinrange(1,5):
print(i)函數(shù)說明:range(start,stop[,step]),其中參數(shù)start:計(jì)數(shù)從start開始。默認(rèn)從0開始,如range(5)等價(jià)于range(0,5);stop:計(jì)數(shù)到stop結(jié)束,但不包括stop,如上例。step:步長,默認(rèn)為1,如:range(0,5)等價(jià)于range(0,5,1)-10-while循環(huán)for循環(huán)一般在執(zhí)行前,已知循環(huán)次數(shù),但當(dāng)不知道循環(huán)次數(shù)時(shí),可以采用while循環(huán)。while循環(huán)屬于條件循環(huán),當(dāng)符合while語句中的條件時(shí),該循環(huán)一直執(zhí)行下去,直至不滿足條件,程序跳出循環(huán)。while循環(huán)語法結(jié)構(gòu)while<條件>:#<條件>同if語句中的條件,結(jié)果為True或False
<語句塊1>
else:#本分支同for循環(huán)中的else分支,一般少用
<語句塊2>while循環(huán)中,當(dāng)<條件>為True時(shí),循環(huán)執(zhí)行<語句塊1>,當(dāng)<條件>為False時(shí),循環(huán)終止。當(dāng)while循環(huán)正常執(zhí)行后,程序會(huì)繼續(xù)執(zhí)行else語句中的<語句塊2>,否則,不會(huì)執(zhí)行else語句。<條件>的變化是在<語句塊>中被設(shè)置的。-11-舉例:猜數(shù)字游戲number=62#程序中預(yù)設(shè)一個(gè)答案,供用戶猜
correct=False
#當(dāng)correct=False時(shí),while循環(huán)繼續(xù);否則,循環(huán)退出
whilenotcorrect:
guess=int(input('請(qǐng)輸入一個(gè)從0到100范圍內(nèi)整數(shù):'))
ifguess==number:
print('恭喜你,你猜對(duì)了!')
correct=True;
elifguess<number:
print('猜錯(cuò)了,你猜的數(shù)太小了')
elifguess>number:
print('猜錯(cuò)了,你猜的數(shù)太大了')
print('程序結(jié)束')-12-break語句當(dāng)執(zhí)行程序時(shí),目前只有不符合for語句中的遍歷條件、或不符合while語句中的條件時(shí),程序才可跳出循環(huán)。但是,有時(shí)我們希望程序在某些特定的條件下,也允許跳出循環(huán)。為此,在編程語言中一般都會(huì)引入break語句實(shí)現(xiàn)該功能。break語句一般處于for或while循環(huán)<語句塊>中的if條件語句中,其作用是強(qiáng)制跳出循環(huán),無論循環(huán)條件是否滿足或預(yù)設(shè)的迭代次數(shù)達(dá)到。break語法結(jié)構(gòu)while<條件1>:
...
if<條件2>:
break
...或者for<循環(huán)變量>in<遍歷集合>:
...
if<條件2>:
break
...舉例:#將所有小寫的英文字母,轉(zhuǎn)化為大寫
whileTrue:
str=input(“請(qǐng)輸入一個(gè)英文字符串:”)
ifstr==‘exit’:#當(dāng)用戶輸入‘exit’字樣,則跳出循環(huán)
break
print(“大寫:”,str.upper())#upper()將小寫字母變?yōu)榇髮懽帜?/p>
print(“程序結(jié)束”)-13-continue語句上述的break語句是強(qiáng)制跳出循環(huán),但有時(shí)我們只是希望中斷當(dāng)前迭代的執(zhí)行,跳轉(zhuǎn)至下一個(gè)迭代繼續(xù)執(zhí)行,而并非完全跳出循環(huán),因此,在編程語言中一般都會(huì)引入continue語句。continue語句的作用是跳過當(dāng)前循環(huán)塊中的剩余語句,并繼續(xù)該循環(huán)的下一次迭代。該語句使用的位置與break語句相同。continue語法結(jié)構(gòu)while<條件1>:
...
if<條件2>:
continue
...或者for<循環(huán)變量>in<遍歷集合>:
...
if<條件2>:
continue
...舉例:#將所有小寫的英文字母,轉(zhuǎn)化為大寫
whileTrue:
str=input(“請(qǐng)輸入一個(gè)英文字符串:”)
ifstr==‘exit’:
break
ifnotstr.isascii():
print(“輸入非英文字符串”)
continue
print("大寫:",str.upper())
print(“程序結(jié)束”)-14-海象操作符海象操作符(WalrusOperator):在Python中表示為:=,是從Python3.8版本開始引入的一種新的賦值表達(dá)式。這個(gè)操作符允許在表達(dá)式中進(jìn)行賦值并返回賦值的結(jié)果,使得某些操作更加簡潔和高效。海象操作符的主要用途是在條件表達(dá)式或循環(huán)中同時(shí)進(jìn)行變量賦值和條件檢測(cè),從而減少代碼量并提高可讀性。1. 在while循環(huán)中使用 海象操作符可以在while循環(huán)中使用,以減少重復(fù)代碼。
#不使用海象操作符n=get_value()whilen>0:process(n)n=get_value()#使用海象操作符while(n:=get_value())>0:process(n)-15-在if語句中使用海象操作符還可以在if語句中使用,同時(shí)進(jìn)行賦值和條件判斷。#不使用海象操作符
result=calculate_value()
ifresult>10:
print(f"Resultislarge:{result}")
#使用海象操作符
if(result:=calculate_value())>10:
print(f"Resultislarge:{result}")-16-案例1:斐波那契數(shù)列斐波那契數(shù)列:數(shù)學(xué)家萊昂納多·斐波那契研究兔子繁殖問題時(shí),提出了斐波那契數(shù)列(Fibonaccisequence),又稱“兔子數(shù)列”。生成斐波那契數(shù)列的方法如下:F(0)=0,F(xiàn)(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N)隨著該數(shù)列項(xiàng)數(shù)的增加,前一項(xiàng)與后一項(xiàng)之比越來越逼近黃金分割數(shù)值0.618,因此該數(shù)列又稱為“黃金分割數(shù)列”。我們利用Python編程生成100之內(nèi)的斐波那契數(shù)列,并驗(yàn)證其黃金分割現(xiàn)象。x1,x2=0,1max_number=100whilex2<max_number:ratio=round(x1/x2,5)print(x2,ratio)x1,x2=x2,x1+x2-17-案例2:PI值計(jì)算蒙特卡羅方法:一般認(rèn)為美國在第二次世界大戰(zhàn)中研制原子彈的“曼哈頓計(jì)劃”中首先提出。但實(shí)際上,1777年,法國數(shù)學(xué)家布豐就提出用投針實(shí)驗(yàn)的方法求圓周率π使用蒙特卡羅方法求解π:邊長為1的單位正方形中占據(jù)半徑為1的單位圓的右上方,向單元正方形范圍內(nèi),隨機(jī)投擲n個(gè)飛鏢后,統(tǒng)計(jì)落在了右上方的1/4圓內(nèi)的飛鏢數(shù)量為m。根據(jù)統(tǒng)計(jì)模擬方法,1/4圓的面積(即π/4)與單位正方形面積(即1)之比,約等于落在1/4圓內(nèi)飛鏢數(shù)量m與落在單位正方形內(nèi)的飛鏢數(shù)n之比,即π/4=m/n,也即π=4m/n-18-實(shí)現(xiàn)代碼:fromrandomimportrandomfrommathimportsqrtn=10000count_in_circle=0foriinrange(0,n):x,y=random(),random()dist=sqrt(x**2+y**2)ifdist<=1:count_in_circle+=1pi=4*count_in_circle/nprint("Pi'svalueis",pi)-19-案例3:廣播模型
-20-問題1:一個(gè)100個(gè)居民的小村莊,村長利用廣播每天播放一次修路倡議,假設(shè)一個(gè)人在任何一天聽到這個(gè)倡議廣播的概率為10%(即P_broad=0.1),問:多少天后全村人都從廣播中聽到了這個(gè)倡議Number=100day=0infective=0.0infective_number=0probability=0.1infective_sequence_str=''while(infective_number<Number):day+=1susceptible=Number-infectiveinfective=infective+probability*susceptibleinfective_number=int(infective+0.5)infective_sequence_str=infective_sequence_str+"{}".format(infective_number)print(infective_sequence_str)print("Inthe{}thday,everyonereceivesthemessagefromthebroadcast.".format(day))-21-擴(kuò)散模型
-22-問題2:一個(gè)100個(gè)居民的小村莊,村長將修路倡議擴(kuò)散給他周圍的人,該倡議在人們之間的擴(kuò)散概率為10%(P_diffuse=0.1),問:多少天后全村人都知道了這個(gè)倡議Number=100day=1infective=1infective_number=1probability_diffuse=0.1infective_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 骨傷科考試試題及答案
- 校園安全知識(shí)培訓(xùn)課件通訊稿
- 森林采伐考試題及答案
- 透析器反應(yīng)試題及答案
- 就業(yè)幫扶面試題及答案
- 測(cè)字考試題及答案
- 基礎(chǔ)護(hù)理考試題及答案
- 司索工考試試題及答案
- 肌肉審美測(cè)試題及答案
- 毒物排泄試題及答案
- 2025云南航空產(chǎn)業(yè)投資集團(tuán)(云南機(jī)場(chǎng)集團(tuán))限責(zé)任公司招聘97人管理單位筆試遴選500模擬題附帶答案詳解
- GA/T 761-2024停車庫(場(chǎng))安全管理系統(tǒng)技術(shù)要求
- 體彩店雇人雇傭合同6篇
- 青少年抑郁癥的癥狀辨識(shí)
- 2024-2025學(xué)年八年級(jí)上冊(cè)物理 第五章 透鏡以及其應(yīng)用 測(cè)試卷(含答案)
- 隧洞施工安全教育培訓(xùn)
- 《車船稅法》課件
- 吉林大學(xué)《數(shù)據(jù)庫系統(tǒng)原理(雙語)》2021-2022學(xué)年期末試卷
- JJF 2158-2024 熱量表型式評(píng)價(jià)大綱
- 客戶投訴制度
- 公司領(lǐng)導(dǎo)碰頭會(huì)制度
評(píng)論
0/150
提交評(píng)論