Python深度學(xué)習(xí)及智能車競賽實(shí)踐 課件 3-程序控制結(jié)構(gòu)_第1頁
Python深度學(xué)習(xí)及智能車競賽實(shí)踐 課件 3-程序控制結(jié)構(gòu)_第2頁
Python深度學(xué)習(xí)及智能車競賽實(shí)踐 課件 3-程序控制結(jié)構(gòu)_第3頁
Python深度學(xué)習(xí)及智能車競賽實(shí)踐 課件 3-程序控制結(jié)構(gòu)_第4頁
Python深度學(xué)習(xí)及智能車競賽實(shí)踐 課件 3-程序控制結(jié)構(gòu)_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第三章程序控制結(jié)構(gòu)Python深度學(xué)習(xí)及智能車競賽實(shí)踐010203流程圖及程序基本結(jié)構(gòu)程序的分支結(jié)構(gòu)程序的循環(huán)結(jié)構(gòu)目錄第2頁04程序的異常處理05random庫06turtle庫010203流程圖及程序基本結(jié)構(gòu)程序的分支結(jié)構(gòu)程序的循環(huán)結(jié)構(gòu)目錄第3頁04程序的異常處理05random庫06turtle庫程序的流程圖用一系列圖形、流程線和文字說明描述程序的基本操作和控制流程,是程序分析和過程描述的最基本方式。流程圖的基本元素包括7種起止框判斷框處理框輸入/輸出框注釋框流向線連接點(diǎn)01—流程圖及程序基本結(jié)構(gòu)程序流程圖示例:由連接點(diǎn)A連接的一個(gè)程序程序的流程圖01—流程圖及程序基本結(jié)構(gòu)程序由三種基本結(jié)構(gòu)組成:順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)這些基本結(jié)構(gòu)都有一個(gè)入口和一個(gè)出口,任何程序都由這三種基本結(jié)構(gòu)組合而成。01—流程圖及程序基本結(jié)構(gòu)程序的基本結(jié)構(gòu)語句塊1語句塊2順序結(jié)構(gòu)是程序按照順序依次執(zhí)行的一種運(yùn)行方式,其中語句塊1和語句塊2表示一個(gè)或一組順序執(zhí)行的語句。01—流程圖及程序基本結(jié)構(gòu)順序結(jié)構(gòu)分支結(jié)構(gòu)是程序根據(jù)條件判斷結(jié)果而選擇不同向前執(zhí)行路徑的一種運(yùn)行方式,包括單分支結(jié)構(gòu)和二分支結(jié)構(gòu),可由二分支結(jié)構(gòu)擴(kuò)展形成多分支結(jié)構(gòu)。條件?True語句塊False條件?True語句塊1False語句塊201—流程圖及程序基本結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)是程序根據(jù)條件判斷結(jié)果向后反復(fù)執(zhí)行的一種運(yùn)行方式,根據(jù)循環(huán)體觸發(fā)條件不同,包括條件循環(huán)和遍歷循環(huán)結(jié)構(gòu)。01—流程圖及程序基本結(jié)構(gòu)循環(huán)結(jié)構(gòu)實(shí)例:整數(shù)累加。輸入:正整數(shù)R處理:S=1+2+3+…+R輸出:輸出SIPO描述主要用于區(qū)分程序的輸入輸出關(guān)系,重點(diǎn)在于結(jié)構(gòu)劃分,采用自然語言描述流程圖側(cè)重于描述算法的具體流程關(guān)系,結(jié)構(gòu)化關(guān)系相比自然語言描述更進(jìn)一步,有助于表達(dá)算法的具體操作過程代碼描述是最終的程序產(chǎn)出01—流程圖及程序基本結(jié)構(gòu)程序結(jié)構(gòu)描述方式R=eval(input("請輸入正整數(shù):"))i,S=0,0while(i<=R):S=S+ii=i+1print("累加求和",S)010203流程圖及程序基本結(jié)構(gòu)程序的分支結(jié)構(gòu)程序的循環(huán)結(jié)構(gòu)目錄第11頁04程序的異常處理05random庫06turtle庫單分支結(jié)構(gòu):if語句if<條件>:

語句塊如果<條件>的結(jié)果為True,則執(zhí)行語句塊里的語句序列;如果結(jié)果為False,語句塊里的語句會(huì)被跳過。語句塊是一個(gè)或多個(gè)語句;

語句塊中語句與if所在行通過縮進(jìn)表達(dá)包含關(guān)系;02—程序的分支結(jié)構(gòu)if語句的控制流程圖

if語句中語句塊執(zhí)行與否依賴于條件判斷,但無論什么情況,控制都會(huì)轉(zhuǎn)到if語句后與該語句同級(jí)別的下一條語句。單分支結(jié)構(gòu):if語句if<條件>:

語句塊02—程序的分支結(jié)構(gòu)<條件>部分可以使用任何能夠產(chǎn)生True或False的語句形成判斷條件最常見的方式是采用關(guān)系操作符,Python語言共有6個(gè)關(guān)系操作符操作符數(shù)學(xué)符號(hào)描述<<小于<=≤小于等于>=≥

大于等于>>

大于===

等于!=

不等于單分支結(jié)構(gòu):if語句if<條件>:

語句塊02—程序的分支結(jié)構(gòu)操作符及使用描述xandy兩個(gè)條件x和y的邏輯與xory兩個(gè)條件x和y的邏輯或notx

條件x的邏輯非用于條件組合的三個(gè)保留字單分支結(jié)構(gòu):if語句if<條件>:

語句塊02—程序的分支結(jié)構(gòu)實(shí)例3.1:智能車電池電壓檢測智能車比賽中使用的鎳氫電池電壓范圍在8V-16V之間,而智能車微處理單元的工作電壓在10V-13V之間,為了保證智能車穩(wěn)定的運(yùn)行,在開機(jī)之前,需要檢查電池電壓,實(shí)際使用中電池電壓由電壓讀取電路獲得。單分支結(jié)構(gòu):if語句02—程序的分支結(jié)構(gòu)if-else語句用來形成二分支結(jié)構(gòu),語法格式如下:if<條件>:<語句塊1>else:<語句塊2>二分支語句用于區(qū)分<條件>的兩種可能True或者False,分別形成執(zhí)行路徑;<語句塊1>是在if條件滿足后執(zhí)行的一個(gè)或多個(gè)語句序列;<語句塊2>是if條件不滿足后執(zhí)行的語句序列。二分支結(jié)構(gòu)02—程序的分支結(jié)構(gòu)二分支結(jié)構(gòu):if-else語句02—程序的分支結(jié)構(gòu)二分支結(jié)構(gòu)簡潔表達(dá)方式,適合通過判斷返回特定值,語法格式如下:

<表達(dá)式1>if<條件>else<表達(dá)式2>Vol=eval(input("請輸入電池電壓,單位V:"))print(“電池{}電壓要求!”.format(“符合”if10<=Vol<=13else"不符合"))二分支結(jié)構(gòu)02—程序的分支結(jié)構(gòu)Python的if-elif-else描述多分支結(jié)構(gòu),語句格式如下:if<條件1>:<語句塊1>elif<條件2>:<語句塊2>...else:<語句塊N>條件1

?True語句塊NFalseFalseFalse……條件N-1

?語句塊1語句塊N-1多分支結(jié)構(gòu)02—程序的分支結(jié)構(gòu)多分支結(jié)構(gòu)是二分支結(jié)構(gòu)的擴(kuò)展,這種形式通常用于設(shè)置同一個(gè)判斷條件的多條執(zhí)行路徑;程序依次評(píng)估尋找第一個(gè)結(jié)果為True的條件,執(zhí)行該條件下的語句塊,結(jié)束后跳過整個(gè)if-elif-else結(jié)構(gòu),執(zhí)行后面的語句;如果沒有任何條件成立,else下面的語句塊被執(zhí)行;else子句是可選的。條件1

?True語句塊NFalseFalseFalse……條件N-1

?語句塊1語句塊N-102—程序的分支結(jié)構(gòu)02—程序的分支結(jié)構(gòu)010203流程圖及程序基本結(jié)構(gòu)程序的分支結(jié)構(gòu)程序的循環(huán)結(jié)構(gòu)目錄第23頁04程序的異常處理05random庫06turtle庫遍歷循環(huán)根據(jù)循環(huán)執(zhí)行次數(shù)的確定性,循環(huán)可以分為確定次數(shù)循環(huán)和非確定次數(shù)循環(huán);確定次數(shù)循環(huán)指循環(huán)體對(duì)循環(huán)次數(shù)有明確的定義,循環(huán)次數(shù)采用遍歷結(jié)構(gòu)中元素個(gè)數(shù)來體現(xiàn)。Python通過保留字for實(shí)現(xiàn)“遍歷循環(huán)”:for<循環(huán)變量>in<遍歷結(jié)構(gòu)>:<語句塊>

03—程序的循環(huán)結(jié)構(gòu)遍歷結(jié)構(gòu)可以是字符串、文件、組合數(shù)據(jù)類型或range()函數(shù):01234>>>foriinrange(5): print(i)BUAA>>>forcin"BUAA": print(c)循環(huán)N次foriinrange(N):<語句塊>遍歷文件fi的每一行forlineinfi:<語句塊>遍歷字符串sforcins:<語句塊>遍歷列表lsforiteminls:<語句塊>遍歷循環(huán)03—程序的循環(huán)結(jié)構(gòu)for<循環(huán)變量>in<遍歷結(jié)構(gòu)>:<語句塊1>else:<語句塊2>當(dāng)for循環(huán)正常執(zhí)行之后,程序會(huì)繼續(xù)執(zhí)行else語句中內(nèi)容;else語句只在循環(huán)正常執(zhí)行之后才執(zhí)行并結(jié)束,可以在<語句塊2>中放置判斷循環(huán)執(zhí)行情況的語句。>>>

循環(huán)進(jìn)行中:B循環(huán)進(jìn)行中:U循環(huán)進(jìn)行中:A循環(huán)進(jìn)行中:A循環(huán)正常結(jié)束forsin"BUAA":print("循環(huán)進(jìn)行中:"+s)else:s="循環(huán)正常結(jié)束"print(s)03—程序的循環(huán)結(jié)構(gòu)遍歷循環(huán)擴(kuò)展模式一直保持循環(huán)操作直到特定循環(huán)條件不被滿足才結(jié)束,不需要提前知道確定的循環(huán)次數(shù)。

Python通過保留字while實(shí)現(xiàn)條件循環(huán):while<條件>:<語句塊>0369>>>n=0>>>whilen<10:print(n)n=n+303—程序的循環(huán)結(jié)構(gòu)條件循環(huán)while<條件>:<語句塊1>else:<語句塊2>>>>

循環(huán)進(jìn)行中:B循環(huán)進(jìn)行中:U循環(huán)進(jìn)行中:A循環(huán)進(jìn)行中:A循環(huán)正常結(jié)束s,idx="BUAA",0whileidx<len(s):print("循環(huán)進(jìn)行中:"+s[idx])

idx+=1else:s="循環(huán)正常結(jié)束"print(s)03—程序的循環(huán)結(jié)構(gòu)條件循環(huán)擴(kuò)展模式實(shí)例3.6:智能車電池電壓持續(xù)檢測(for語句)智能車比賽中需要持續(xù)監(jiān)控電池電壓,設(shè)計(jì)程序每隔10步檢查一次電池電壓。03—程序的循環(huán)結(jié)構(gòu)實(shí)例3.8:智能車電池電壓持續(xù)檢測(while語句)智能車比賽中需要持續(xù)監(jiān)控電池電壓,設(shè)計(jì)程序每隔10步檢查一次電池電壓。03—程序的循環(huán)結(jié)構(gòu)循環(huán)保留字:break和continue作用:輔助控制循環(huán)執(zhí)行:Break:來跳出當(dāng)前層循環(huán),脫離該循環(huán)后程序從循環(huán)后代碼繼續(xù)執(zhí)行;Continue:結(jié)束當(dāng)前層當(dāng)次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,進(jìn)行下一次循環(huán),但不跳出當(dāng)前層循環(huán)。03—程序的循環(huán)結(jié)構(gòu)區(qū)別:continue語句只結(jié)束本次循環(huán),而不終止整個(gè)循環(huán)的執(zhí)行;break語句則是結(jié)束整個(gè)循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立。>>>

VEICLE>>>

VEforsin"VEHICLE":ifs=="H":continueprint(s,end="")forsin"VEHICLE":ifs=="H":breakprint(s,end="")循環(huán)保留字:break和continue03—程序的循環(huán)結(jié)構(gòu)在for循環(huán)和while循環(huán)中的else擴(kuò)展用法中:Break和return語句被執(zhí)行對(duì)else有影響;continue保留字對(duì)else沒有影響。>>>

VEICLE正常退出>>>

VEforsin"VEHICLE":ifs=="H":continueprint(s,end="")else:print("正常退出")forsin"VEHICLE":ifs=="H":breakprint(s,end="")else:print("正常退出")循環(huán)保留字:break和continue03—程序的循環(huán)結(jié)構(gòu)>>>

BBBBBBBBBBUAAAAAAAAAAAAAAAAAAAA

forsin“BUAA":foriinrange(10):print(s,end="")ifs==“U":break多層循環(huán)中break語句只能跳出最內(nèi)層循環(huán)。循環(huán)保留字:break和continue03—程序的循環(huán)結(jié)構(gòu)實(shí)例3.10:智能車電池電壓持續(xù)檢測智能車比賽中需要持續(xù)監(jiān)控電池電壓,設(shè)計(jì)程序每隔10步檢查一次電池電壓,檢測到異常則停止檢查。03—程序的循環(huán)結(jié)構(gòu)010203流程圖及程序基本結(jié)構(gòu)程序的分支結(jié)構(gòu)程序的循環(huán)結(jié)構(gòu)目錄第36頁04程序的異常處理05random庫06turtle庫當(dāng)用戶輸入的不是數(shù)字呢?

分析下面這段小程序:num=eval(input("請輸入一個(gè)整數(shù):"))print(num**2)>>>請輸入一個(gè)整數(shù):10010000>>>請輸入一個(gè)整數(shù):NOTraceback(mostrecentcalllast):File"D:/pycodes/c4/3.py",line1,in<module>num=eval(input("請輸入一個(gè)整數(shù):"))File"<string>",line1,in<module>NameError:name'No'isnotdefined04—程序的異常處理Python解釋器返回了異常信息,同時(shí)程序退出04—程序的異常處理異常處理:try-except語句Python異常信息中最重要的部分是異常類型,它表明了發(fā)生異常的原因,也是程序處理異常的依據(jù)。Python使用try-except語句實(shí)現(xiàn)異常處理,基本的語法格式如下:try: <語句塊1>except<異常類型>: <語句塊2>04—程序的異常處理04—程序的異常處理異常處理:try-except語句異常的高級(jí)用法try-except語句可以支持多個(gè)except語句,語法格式如下:最后一個(gè)except語句沒有指定任何類型,表示它對(duì)應(yīng)的語句塊可以處理所有其他異常;這個(gè)過程與if-elif-else語句類似,是分支結(jié)構(gòu)的一種表達(dá)方式。try: <語句塊1>except<異常類型1>: <語句塊2>….except<異常類型N>: <語句塊N+1>except: <語句塊N+2>04—程序的異常處理010203流程圖及程序基本結(jié)構(gòu)程序的分支結(jié)構(gòu)程序的循環(huán)結(jié)構(gòu)目錄第42頁04程序的異常處理05random庫06turtle庫random庫是使用隨機(jī)數(shù)的Python標(biāo)準(zhǔn)庫random庫主要用于生成隨機(jī)數(shù);偽隨機(jī)數(shù):采用梅森旋轉(zhuǎn)算法生成的(偽)隨機(jī)序列中元素;05—random庫函數(shù)描述seed(a=None)初始化隨機(jī)數(shù)種子,默認(rèn)值為當(dāng)前系統(tǒng)時(shí)間random()生成一個(gè)[0.0,1.0]之間的隨機(jī)小數(shù)randint(a,b)生成一個(gè)[a,b]之間的整數(shù)getrandbits(k)生成一個(gè)k比特長度的隨機(jī)整數(shù)randrange(start,stop[,step])生成一個(gè)[start,stop]之間以step為步數(shù)的隨機(jī)整數(shù)uniform(a,b)生成一個(gè)[a,b]之間的隨機(jī)小數(shù)choice(seq)從序列類型(例如:列表)中隨機(jī)返回一個(gè)元素shuffle(seq)將序列類型中元素隨機(jī)排列,返回打亂后的序列sample(pop,k)從pop類型中隨機(jī)選取k個(gè)元素,以列表類型返回05—random庫>>>fromrandomimport*>>>random()0.2922089114412476>>>uniform(1,10)1.5913082783598524>>>uniform(1,20)18.964924311283845>>>randrange(0,100,4)#從0開始到100以4遞增的元素中隨機(jī)返回96>>>choice(range(100))97>>>ls=list(range(10))>>>print(ls)[0,1,2,3,4,5,6,7,8,9]>>>shuffle(ls)>>>print(ls)[1,2,8,9,0,7,3,6,5,4]random庫引用對(duì)random庫的引用可以采用下面兩種方式實(shí)現(xiàn):importrandomfromrandomimport*05—random庫生成隨機(jī)數(shù)之前可以通過seed()函數(shù)指定隨機(jī)數(shù)種子,隨機(jī)種子一般是一個(gè)整數(shù),只要種子相同,每次生成的隨機(jī)數(shù)序列也相同,這種方法便于測試和同步數(shù)據(jù)。

>>>fromrandomimport*>>>seed(125)#隨機(jī)種子賦值125>>>"{}.{}.{}".format(randint(1,10),randint(1,10),randint(1,10))'4.4.10'>>>"{}.{}.{}".format(randint(1,10),randint(1,10),randint(1,10))'5.10.3'>>>seed(125)#再次給隨機(jī)種子賦值125>>>"{}.{}.{}".format(randint(1,10),randint(1,10),randint(1,10))'4.4.10'05—random庫05—random庫010203流程圖及程序基本結(jié)構(gòu)程序的分支結(jié)構(gòu)程序的循環(huán)結(jié)構(gòu)目錄第48頁04程序的異常處理05random庫06turtle庫Turtle庫(海龜庫)是turtle繪圖體系的Python實(shí)現(xiàn)-

Python語言的標(biāo)準(zhǔn)庫之一;入門級(jí)的圖形繪制函數(shù)庫;turtle繪圖體系:1969年誕生,主要用

于程序設(shè)計(jì)入門。06—turtle庫turtle的繪圖原理-有一只海龜,起始在窗體正中心(0,0),在畫布上游走

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論