程序設(shè)計(jì)基礎(chǔ)課件:第7講Python應(yīng)用III_第1頁
程序設(shè)計(jì)基礎(chǔ)課件:第7講Python應(yīng)用III_第2頁
程序設(shè)計(jì)基礎(chǔ)課件:第7講Python應(yīng)用III_第3頁
程序設(shè)計(jì)基礎(chǔ)課件:第7講Python應(yīng)用III_第4頁
程序設(shè)計(jì)基礎(chǔ)課件:第7講Python應(yīng)用III_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論