版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、上講回顧,數(shù)值類型轉(zhuǎn)換方法 布爾類型轉(zhuǎn)換說明 案例分析 算法設(shè)計(jì)(使用流程圖) 函數(shù)化改造 語法知識: # break語句 # 指數(shù)運(yùn)算符* # 字符串的格式化輸出%,程序設(shè)計(jì)基礎(chǔ),1,布爾類型轉(zhuǎn)換說明,布爾類型轉(zhuǎn)換示例: bool (-123) bool (0) bool (abc) bool (False) bool () 在python中,以下數(shù)值會被認(rèn)為是False: 為0的數(shù)字,包括0,0.0; 空字符串,包括,“”; 表示空值的None; 空集合,包括(),。,程序設(shè)計(jì)基礎(chǔ),2,True False True True False,布爾類型轉(zhuǎn)換說明,在if、while等條件判斷語句
2、里,判斷條件會自動進(jìn)行一次bool的轉(zhuǎn)換。 這是編程中是很常見的一種寫法。 例如: 其中的條件判斷等效于: or,程序設(shè)計(jì)基礎(chǔ),3,語法知識點(diǎn)4: 特殊變量_name_,注意下面兩行代碼 在Python中,一個(gè).py文件稱之為一個(gè)模塊(Module)。 直接運(yùn)行py模塊文件時(shí),Python解釋器把一個(gè)特殊變量_name_置為_main_ ; 在其他地方導(dǎo)入該py模塊時(shí),此處if判斷將失敗; 這種if測試可以讓一個(gè)模塊通過命令行運(yùn)行時(shí)執(zhí)行一些額外的代碼,最常見的就是運(yùn)行測試。,程序設(shè)計(jì)基礎(chǔ),4,案例三 : 點(diǎn)球小游戲,基本要求(一次罰球): 玩家輸入射門方向; 計(jì)算機(jī)扮演守門員的角色,隨機(jī)挑選撲
3、救方向; 若兩個(gè)方向一致,則計(jì)算機(jī)贏,否則玩家贏。 案例分析: 計(jì)算機(jī)撲救方向的隨機(jī)生成; 點(diǎn)球游戲的流程控制。 算法流程:,程序設(shè)計(jì)基礎(chǔ),5,案例三 : 點(diǎn)球小游戲(代碼),程序設(shè)計(jì)基礎(chǔ),6,案例三 : 點(diǎn)球小游戲,擴(kuò)展要求(點(diǎn)球大戰(zhàn)): 玩家和計(jì)算機(jī)輪流罰點(diǎn)球; 每輪贏的一方得1分,5輪后統(tǒng)計(jì)雙方最后得分。 案例分析: 一輪罰球操作的循環(huán)執(zhí)行; 每一輪點(diǎn)球包含雙方的各一輪罰球; 每一方的總得分由其單輪罰球贏的次數(shù)累加而得到。 思考:如何定義一個(gè)適用于兩方的單輪罰球函數(shù)?,程序設(shè)計(jì)基礎(chǔ),7,第7講 Python應(yīng)用III,案例四:計(jì)算階乘 案例五:漢諾塔問題,8,程序設(shè)計(jì)基礎(chǔ),案例四 : 計(jì)
4、算階乘 (代碼1),n! = 1 x 2 x 3 x . x (n-1) x n 算法流程: 代碼實(shí)現(xiàn): 另一種寫法:,程序設(shè)計(jì)基礎(chǔ),9,案例四 : 計(jì)算階乘 (代碼2),n! = 1 x 2 x 3 x . x (n-1) x n = (n-1)! x n (n1) 令 fact (n) = n!,則有: fact (n) = fact (n-1) x n fact (1) = 1! = 1 代碼實(shí)現(xiàn):,程序設(shè)計(jì)基礎(chǔ),10,語法知識點(diǎn)1: 遞歸函數(shù),如果一個(gè)函數(shù)在內(nèi)部調(diào)用自己本身,該函數(shù)就是遞歸函數(shù)。 根據(jù)函數(shù)定義看fact(5)的計(jì)算過程: 5* fact(4) 5* (4* fact(3
5、) 5* (4* (3* fact(2) 5* (4* (3* (2* fact(1) 5* (4* (3* (2* 1) 5* (4* (3* 2) 5* (4* 6) 5* 24 120,程序設(shè)計(jì)基礎(chǔ),11,語法知識點(diǎn)1: 遞歸函數(shù),理論上,所有的遞歸函數(shù)都可以寫成循環(huán)的方式,但循環(huán)的邏輯不如遞歸清晰。 遞歸函數(shù)的優(yōu)點(diǎn): 定義簡單 邏輯清晰 使用遞歸函數(shù)需要注意防止“棧溢出”。 遞歸函數(shù)的缺點(diǎn): 過深的調(diào)用會導(dǎo)致棧溢出。 Python程序員的進(jìn)化,程序設(shè)計(jì)基礎(chǔ),12,語法知識點(diǎn)1: 遞歸函數(shù),遞歸算法一般用于解決三類問題: 數(shù)據(jù)的定義是按遞歸定義的。 階乘,F(xiàn)ibonacci函數(shù) 問題解法
6、按遞歸方法實(shí)現(xiàn)。 回溯、漢諾塔 數(shù)據(jù)結(jié)構(gòu)的形式是按遞歸定義的。 鏈表、樹(遍歷)、圖(搜索),程序設(shè)計(jì)基礎(chǔ),13,問題描述 如果有一對小兔,從第三個(gè)月開始他們每個(gè)月都生一對兔子,新生的兔子從第三個(gè)月開始又每個(gè)月生一對兔子。按此規(guī)律,假定兔子沒有死亡,滿一年時(shí)一共可以繁殖成多少對兔子? 700多年前,意大利著名數(shù)學(xué)家斐波那契在他的算盤全集一書中提出了這樣一道有趣的兔子繁殖問題。,相似案例:兔子繁殖問題,程序設(shè)計(jì)基礎(chǔ),14,解題思路(列舉法) f(1) = 1(第1個(gè)月有一對兔子) f(2) = 1(第2個(gè)月還是一對兔子) f(3) = 2(原來有一對兔子,第3個(gè)月開始,每個(gè)月生一對兔子) f(4
7、) = 3(原來有兩對兔子,有一對可以生育) f(5) = 5(原來有3對兔子,第3個(gè)月出生的那對兔子也可以生育了, 現(xiàn)在有兩對兔子可以生育) f(6) = 8(原來有5對兔子,第4個(gè)月出生的那對兔子也可以生育了, 現(xiàn)在有3對兔子可以生育) . 第n個(gè)月兔子的對數(shù)為 f(n) = f(n-1) + f(n-2) 斐波那契數(shù)列問題,相似案例:兔子繁殖問題,程序設(shè)計(jì)基礎(chǔ),15,自然中的斐波那契數(shù)列,斐波那契數(shù)列 (黃金分割數(shù)列),程序設(shè)計(jì)基礎(chǔ),16,斐波那契數(shù)列(黃金分割數(shù)列),斐波那契螺旋線 上機(jī)實(shí)驗(yàn)1:自行編寫兔子繁殖問題的遞歸或非遞歸程序 ,程序設(shè)計(jì)基礎(chǔ),17,第7講 Python應(yīng)用III
8、,案例四:計(jì)算階乘 案例五:漢諾塔問題,18,程序設(shè)計(jì)基礎(chǔ),案例五 : 漢諾塔問題,漢諾塔問題是源于印度一個(gè)古老傳說的益智玩具。 大梵天創(chuàng)造世界的時(shí)候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規(guī)定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個(gè)圓盤。,程序設(shè)計(jì)基礎(chǔ),19,A,B,C,案例五 : 漢諾塔問題,程序設(shè)計(jì)基礎(chǔ),20,解題思路(圓盤數(shù)為n): 首先把柱子A上面n-1個(gè)盤子移動到柱子B上; 然后把柱子A上最大的一塊放在柱子C上; 最后把柱子B上的所有(n-1)個(gè)盤子移動到C上。 設(shè)
9、圓盤數(shù)為n時(shí),至少需要移動 H(n)次,存在如下關(guān)系: H(1) = 1 H(n) = 2*H(n-1) + 1 (n1) H(n) 的一般式:H(n) = 2n - 1 (n0) 可以證明,這種方法的確是最少次數(shù)的。,案例五 : 漢諾塔問題,程序設(shè)計(jì)基礎(chǔ),21,mv(3, A, B, C),mv(2, A, C, B),AC,mv(2, B,A,C),mv(1,A,C,B),AC,mv(1,B,A,C),A, B, C,A, B, C,mv(1,A,C,B),AC,mv(1,B,A,C),AC,A, B, C,A, B, C,A, B, C,A, B, C,(AB),(AB) (A C ),AC,(BC) (C B
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 46815-2025鈦合金板材超塑成形和擴(kuò)散連接工藝規(guī)范
- 公共設(shè)施管理與維護(hù)操作手冊(標(biāo)準(zhǔn)版)
- 車站人員考勤管理制度
- 財(cái)務(wù)管理制度
- 辦公室員工培訓(xùn)課程更新制度
- 辦公室出差與報(bào)銷管理制度
- 2026年錫山城發(fā)集團(tuán)公開招聘5人備考題庫及完整答案詳解1套
- 人教版初中語文七下《駱駝祥子》基礎(chǔ)復(fù)習(xí)必刷題(附答案)
- 2026年葫蘆島市南票區(qū)政府專職消防隊(duì)員招聘37人備考題庫及參考答案詳解一套
- 關(guān)于選聘“警民聯(lián)調(diào)”室專職人民調(diào)解員20人的備考題庫參考答案詳解
- 2026長治日報(bào)社工作人員招聘勞務(wù)派遣人員5人參考題庫及答案1套
- 2026年菏澤學(xué)院單招職業(yè)傾向性考試題庫附答案解析
- 2025年體育教師個(gè)人年終述職報(bào)告
- 實(shí)際問題與一次函數(shù)課件2025-2026學(xué)年人教版八年級數(shù)學(xué)下冊
- 2024年鹽城市體育局直屬事業(yè)單位招聘真題
- 肝水解肽在組織工程和再生醫(yī)學(xué)中的應(yīng)用
- 醫(yī)學(xué)全科知識護(hù)理
- 14J936《變形縫建筑構(gòu)造》
- 地產(chǎn)綠化景觀規(guī)劃方案
- 2024年安全員之B證(項(xiàng)目負(fù)責(zé)人)考試題庫(含答案)
- 2024屆河北省石家莊市普通高中學(xué)校畢業(yè)年級教學(xué)質(zhì)量摸底檢測物理試卷含答案
評論
0/150
提交評論