《Python程序設計》課件3-編程邏輯_第1頁
《Python程序設計》課件3-編程邏輯_第2頁
《Python程序設計》課件3-編程邏輯_第3頁
《Python程序設計》課件3-編程邏輯_第4頁
《Python程序設計》課件3-編程邏輯_第5頁
已閱讀5頁,還剩21頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

~1~第三章編程邏輯目錄程序流程圖順序結構分支結構循環結構實例:編程邏輯應用本章習題-2-編程邏輯編程邏輯:一是順序執行;二是條件執行;三是循環執行。程序流程圖-3-順序結構程序的順序結構是指程序從上至下按行依次按行執行。語法結構:<語句塊1>

...

<語句塊N>在<順序結構的語句塊>中,其中的變量的作用域是自其聲明之后的代碼段-4-分支結構程序有一個或多個條件分支,滿足某一條件,則執行該條件對應的分支,其他不滿足條件的分支,不予執行。語法結構:if<條件1>:#若<條件1>滿足,則執行<語句塊1>

<語句塊1>

...

elif<條件i>:#否則,但滿足<條件i>,則執行<語句塊i>

<語句塊i>

...

else:#若以上所有條件均不滿足,則執行<語句塊n>

<語句塊n>形成判斷條件最常用的方式是采用關系操作符,包括<、<=、>、>=、==和!=。在實際編程中,分支結構中的條件個數可以是1個或多個。注意:符號=表示賦值,符號==表示判斷符號前后兩個操作數是否相等。-5-舉例:中國歷史年代表在中國歷史中,隋、唐、五代十國的年代表如下:隋:581-618唐 :618-907五代十國:907-960給定年份判斷其所處朝代的代碼,主要采用分支結構,其流程如下圖所示-6-歷史朝代判別算法代碼如下:year_str=input("請輸入歷史年份:")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語句的結構,但功能更強大和靈活。在Python中,這個特性通過match和case關鍵字實現,它根據對象的結構和內容來進行分支處理。以下是一個使用模式匹配的示例: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-循環結構循環結構是指當程序在只有個別變量變化的情況下,需要反復執行相似邏輯,直到滿足某一個條件后,退出循環。在Python語言中,一般有兩種實現方法:for循環和while循環。前者為遍歷循環,而后者為條件循環-9-for循環for循環是一種遍歷循環,即遍歷一個序列中的每一項,迭代執行相應代碼。這里的序列可理解為其中的元素按某一順序排列成的一個集合,比如從0到99的自然數組成的集合。for循環語法結構:for<循環變量>in<遍歷集合>:

<語句塊1>

else:#該分支不常用,一般可刪除本句和<語句塊2>

<語句塊2>舉例:foriinrange(1,5):

print(i)函數說明:range(start,stop[,step]),其中參數start:計數從start開始。默認從0開始,如range(5)等價于range(0,5);stop:計數到stop結束,但不包括stop,如上例。step:步長,默認為1,如:range(0,5)等價于range(0,5,1)-10-while循環for循環一般在執行前,已知循環次數,但當不知道循環次數時,可以采用while循環。while循環屬于條件循環,當符合while語句中的條件時,該循環一直執行下去,直至不滿足條件,程序跳出循環。while循環語法結構while<條件>:#<條件>同if語句中的條件,結果為True或False

<語句塊1>

else:#本分支同for循環中的else分支,一般少用

<語句塊2>while循環中,當<條件>為True時,循環執行<語句塊1>,當<條件>為False時,循環終止。當while循環正常執行后,程序會繼續執行else語句中的<語句塊2>,否則,不會執行else語句。<條件>的變化是在<語句塊>中被設置的。-11-舉例:猜數字游戲number=62#程序中預設一個答案,供用戶猜

correct=False

#當correct=False時,while循環繼續;否則,循環退出

whilenotcorrect:

guess=int(input('請輸入一個從0到100范圍內整數:'))

ifguess==number:

print('恭喜你,你猜對了!')

correct=True;

elifguess<number:

print('猜錯了,你猜的數太小了')

elifguess>number:

print('猜錯了,你猜的數太大了')

print('程序結束')-12-break語句當執行程序時,目前只有不符合for語句中的遍歷條件、或不符合while語句中的條件時,程序才可跳出循環。但是,有時我們希望程序在某些特定的條件下,也允許跳出循環。為此,在編程語言中一般都會引入break語句實現該功能。break語句一般處于for或while循環<語句塊>中的if條件語句中,其作用是強制跳出循環,無論循環條件是否滿足或預設的迭代次數達到。break語法結構while<條件1>:

...

if<條件2>:

break

...或者for<循環變量>in<遍歷集合>:

...

if<條件2>:

break

...舉例:#將所有小寫的英文字母,轉化為大寫

whileTrue:

str=input(“請輸入一個英文字符串:”)

ifstr==‘exit’:#當用戶輸入‘exit’字樣,則跳出循環

break

print(“大寫:”,str.upper())#upper()將小寫字母變為大寫字母

print(“程序結束”)-13-continue語句上述的break語句是強制跳出循環,但有時我們只是希望中斷當前迭代的執行,跳轉至下一個迭代繼續執行,而并非完全跳出循環,因此,在編程語言中一般都會引入continue語句。continue語句的作用是跳過當前循環塊中的剩余語句,并繼續該循環的下一次迭代。該語句使用的位置與break語句相同。continue語法結構while<條件1>:

...

if<條件2>:

continue

...或者for<循環變量>in<遍歷集合>:

...

if<條件2>:

continue

...舉例:#將所有小寫的英文字母,轉化為大寫

whileTrue:

str=input(“請輸入一個英文字符串:”)

ifstr==‘exit’:

break

ifnotstr.isascii():

print(“輸入非英文字符串”)

continue

print("大寫:",str.upper())

print(“程序結束”)-14-海象操作符海象操作符(WalrusOperator):在Python中表示為:=,是從Python3.8版本開始引入的一種新的賦值表達式。這個操作符允許在表達式中進行賦值并返回賦值的結果,使得某些操作更加簡潔和高效。海象操作符的主要用途是在條件表達式或循環中同時進行變量賦值和條件檢測,從而減少代碼量并提高可讀性。1. 在while循環中使用 海象操作符可以在while循環中使用,以減少重復代碼。

#不使用海象操作符n=get_value()whilen>0:process(n)n=get_value()#使用海象操作符while(n:=get_value())>0:process(n)-15-在if語句中使用海象操作符還可以在if語句中使用,同時進行賦值和條件判斷。#不使用海象操作符

result=calculate_value()

ifresult>10:

print(f"Resultislarge:{result}")

#使用海象操作符

if(result:=calculate_value())>10:

print(f"Resultislarge:{result}")-16-案例1:斐波那契數列斐波那契數列:數學家萊昂納多·斐波那契研究兔子繁殖問題時,提出了斐波那契數列(Fibonaccisequence),又稱“兔子數列”。生成斐波那契數列的方法如下:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N)隨著該數列項數的增加,前一項與后一項之比越來越逼近黃金分割數值0.618,因此該數列又稱為“黃金分割數列”。我們利用Python編程生成100之內的斐波那契數列,并驗證其黃金分割現象。x1,x2=0,1max_number=100whilex2<max_number:ratio=round(x1/x2,5)print(x2,ratio)x1,x2=x2,x1+x2-17-案例2:PI值計算蒙特卡羅方法:一般認為美國在第二次世界大戰中研制原子彈的“曼哈頓計劃”中首先提出。但實際上,1777年,法國數學家布豐就提出用投針實驗的方法求圓周率π使用蒙特卡羅方法求解π:邊長為1的單位正方形中占據半徑為1的單位圓的右上方,向單元正方形范圍內,隨機投擲n個飛鏢后,統計落在了右上方的1/4圓內的飛鏢數量為m。根據統計模擬方法,1/4圓的面積(即π/4)與單位正方形面積(即1)之比,約等于落在1/4圓內飛鏢數量m與落在單位正方形內的飛鏢數n之比,即π/4=m/n,也即π=4m/n-18-實現代碼: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:一個100個居民的小村莊,村長利用廣播每天播放一次修路倡議,假設一個人在任何一天聽到這個倡議廣播的概率為10%(即P_broad=0.1),問:多少天后全村人都從廣播中聽到了這個倡議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-擴散模型

-22-問題2:一個100個居民的小村莊,村長將修路倡議擴散給他周圍的人,該倡議在人們之間的擴散概率為10%(P_diffuse=0.1),問:多少天后全村人都知道了這個倡議Number=100day=1infective=1infective_number=1probability_diffuse=0.1infective_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論