




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目六烏龜吃魚游戲——面向?qū)ο髏extbook教材Python程序設(shè)計(jì)項(xiàng)目化教程孫海洋
編著
電子工業(yè)出版社ISBN:9787121477546項(xiàng)目描述【項(xiàng)目描述】模擬烏龜吃魚游戲,游戲規(guī)則:水池中有一只烏龜和若干條魚,烏龜和魚在水池中游動(dòng),如果烏龜遇到魚則把魚吃掉,生命值增加,烏龜游動(dòng)消耗體力。如果池中所有的魚都被吃掉或者烏龜體力耗盡游戲結(jié)束。Contents目錄01.聰明的小狗——類和對(duì)象04.愛心募捐——實(shí)例變量和類變量02.莫問年齡和存款——私有成員03.生物進(jìn)化——繼承05.項(xiàng)目實(shí)施06.項(xiàng)目小結(jié)PartOne聰明的小狗——類和對(duì)象掌握類定義結(jié)構(gòu)掌握構(gòu)造對(duì)象的方法掌握通過對(duì)象名調(diào)用屬性和行為的方式任務(wù)描述【任務(wù)描述】設(shè)計(jì)一個(gè)狗類,包含名字、品種、年齡等屬性,具備搖尾、趴下、打滾、奔跑等行為。運(yùn)行結(jié)果如下所示。讓我們一起學(xué)習(xí)類和對(duì)象來解決這個(gè)問題吧!面向?qū)ο蠛皖?1面向?qū)ο缶幊蘋OP是一切皆對(duì)象,把具有相同屬性和行為的對(duì)象抽象為“類”。02面向?qū)ο笕筇匦詾榉庋b、繼承和多態(tài)。03類是編程中創(chuàng)建對(duì)象的模板,用class定義,擁有屬性存儲(chǔ)信息和方法執(zhí)行操作。面向?qū)ο蠛皖悺绢惗x格式1】含構(gòu)造方法【類定義格式2】不含構(gòu)造方法,系統(tǒng)提供默認(rèn)的無參構(gòu)造方法【說明】在Python中,構(gòu)造方法`__init__`用于初始化新創(chuàng)建的對(duì)象,為其屬性賦初值。如果沒有顯式定義構(gòu)造方法(僅含有self)。析構(gòu)方法`__del__`在對(duì)象被刪除時(shí)自動(dòng)調(diào)用。類中的方法通常以`self`作為第一個(gè)參數(shù),代表當(dāng)前對(duì)象實(shí)例,其余參數(shù)根據(jù)需要定義。下面,我們來舉幾個(gè)例子幫助大家更好理解面向?qū)ο蠛皖悺景咐?】定義一個(gè)學(xué)生類,包括姓名、年齡、班級(jí)等屬性,以及自我介紹方法。【案例2】定義一個(gè)鳥類Bird,僅包含飛行方法,不含構(gòu)造方法。創(chuàng)建對(duì)象構(gòu)造類的對(duì)象時(shí),通過類的名字調(diào)用構(gòu)造方法__init__,為該對(duì)象的數(shù)據(jù)成員即屬性賦初值。如果類中沒有顯式定義構(gòu)造方法或者定義的構(gòu)造方法除了self外,沒有其他參數(shù),則創(chuàng)建該類對(duì)象的格式如下:舉例:在這個(gè)例子中,Bird類沒有定義構(gòu)造方法,因此Python自動(dòng)提供了一個(gè)默認(rèn)的無參構(gòu)造方法。當(dāng)我們創(chuàng)建Bird類的對(duì)象b時(shí),我們使用Bird(),括號(hào)內(nèi)是空的,表示沒有傳遞任何參數(shù)。然后我們可以調(diào)用b對(duì)象的fly方法來模擬鳥的飛行行為。創(chuàng)建對(duì)象若類中定義的構(gòu)造方法除了self外還有其他參數(shù),則創(chuàng)建該類對(duì)象格式如下:舉例:在這個(gè)例子中,Student類有一個(gè)構(gòu)造方法__init__,它接受三個(gè)參數(shù):name、age和class_info。創(chuàng)建Student類的對(duì)象s1和s2時(shí),需要提供這些參數(shù)的值。然后,我們可以通過調(diào)用introduce方法來打印每個(gè)學(xué)生的信息。通過對(duì)象訪問屬性和行為訪問對(duì)象屬性的格式如下:舉例:在這個(gè)例子中,Student類有三個(gè)屬性:name、age和cls。我們創(chuàng)建了兩個(gè)Student類的對(duì)象s1和s2,并且為它們的屬性賦了初值。然后,我們通過點(diǎn)操作符訪問這些屬性,并使用print函數(shù)輸出它們的值。通過對(duì)象訪問屬性和行為訪問對(duì)象行為的格式如下:舉例:在這個(gè)例子中,我們定義了一個(gè)Student類,它有一個(gè)構(gòu)造方法和一個(gè)introduce方法。我們創(chuàng)建了一個(gè)Student對(duì)象student,并調(diào)用了它的introduce方法來打印自我介紹。任務(wù)實(shí)施__init__是類的構(gòu)造方法,用于初始化創(chuàng)建的對(duì)象。它接受breed(品種)、name(名字)和age(年齡)作為參數(shù),并將它們?cè)O(shè)置為對(duì)象的屬性。speak方法用于模擬小狗的自我介紹,打印出小狗的品種、名字和年齡。wag方法模擬小狗搖尾巴的動(dòng)作,打印出搖尾巴的小狗的名字。lie方法模擬小狗趴下的動(dòng)作,打印出趴下的小狗的名字。roll_over方法模擬小狗打滾的動(dòng)作,打印出打滾的小狗的名字。run方法模擬小狗跑步的動(dòng)作,參數(shù)dis表示距離(米),并打印出小狗的名字和跑的距離。任務(wù)實(shí)施創(chuàng)建了兩個(gè)Dog類的對(duì)象dog1和dog2,分別代表兩個(gè)不同品種和名字的小狗,以及它們的年齡。調(diào)用各類方法運(yùn)行結(jié)果如下:鞏固案例【案例】定義一個(gè)圓類,包含屬性半徑,及求周長(zhǎng)和面積的方法。參考代碼:PartTwo莫問年齡和存款——私有成員任務(wù)描述【任務(wù)描述】設(shè)計(jì)一個(gè)Python個(gè)人信息類。創(chuàng)建一個(gè)Person類,封裝姓名、私有的年齡、分?jǐn)?shù)和存款。實(shí)現(xiàn)方法以輸出個(gè)人信息、安全地獲取和設(shè)置分?jǐn)?shù)、以及模擬賺錢和花錢。在主程序中演示這些功能。讓我們一起學(xué)習(xí)一下私有成員屬性來完成這個(gè)任務(wù)吧!私有成員屬性Python類中的屬性默認(rèn)是公開的,可以自由訪問和修改,這可能違反封裝原則并降低安全性。為了提供封裝和數(shù)據(jù)保護(hù),Python使用雙下劃線`__`前綴來定義私有屬性,如`__weight`和`__score`。私有屬性只能在類內(nèi)部訪問,外部代碼不能直接訪問它們。通常,類會(huì)提供公共的`get_屬性名`和`set_屬性名`方法來間接訪問和修改這些私有屬性。【錯(cuò)誤案例】試圖在類外直接訪問私有成員屬性。私有成員屬性【正確案例】通過set***和get***方法可在類外間接訪問私有屬性。定義了一個(gè)公開方法getWeight,用于獲取私有屬性__weight的值。定義了一個(gè)公開方法setWeight,它接受一個(gè)參數(shù)newWeight,用于設(shè)置私有屬性__weight的新值。newWeight將傳入的newWeight值賦給私有屬性__weight。調(diào)用setWeight方法,將體重修改為59.5公斤。任務(wù)實(shí)施__init__是構(gòu)造方法,初始化Person對(duì)象的屬性。接受姓名、年齡、分?jǐn)?shù)和金錢作為參數(shù),并將它們?cè)O(shè)置為對(duì)象的屬性。其中,年齡、分?jǐn)?shù)和金錢屬性名前使用了雙下劃線__,這表示它們是私有屬性。speak方法用于打印出人的姓名、年齡、分?jǐn)?shù)和余額。返回私有屬性__age的值和私有屬性__score的值。setSc方法接受一個(gè)新分?jǐn)?shù)newSc,先打印出修改前的成績(jī),然后更新成績(jī),并打印出修改后的成績(jī)。任務(wù)實(shí)施spend方法接受一個(gè)金額amount,將其從余額中減去,并打印出花錢后的信息和當(dāng)前余額。運(yùn)行結(jié)果如下:PartThree生物進(jìn)化——繼承掌握類的定義結(jié)構(gòu)掌握構(gòu)造對(duì)象的方法掌握通過對(duì)象名調(diào)用屬性和行為的方式單繼承單類繼承的格式為:pass表示占位符,通常表示暫時(shí)沒實(shí)現(xiàn)的函數(shù)(方法)體或類體。子類默認(rèn)繼承父類的非私有屬性和方法。直接調(diào)用從父類繼承過來的方法為不重寫父類方法—直接繼承單繼承在子類中重寫父類中的同名方法,相當(dāng)于把從父類繼承過來的該方法覆蓋掉。該方法為重寫父類方法—方法覆蓋運(yùn)行結(jié)果為:多重繼承多重繼承是子類擁有多個(gè)父類,可同時(shí)繼承多個(gè)父類的屬性和方法。其格式為:【案例】閱讀以下程序,分析其運(yùn)行結(jié)果。【分析】子類Swan擁有兩個(gè)父類Bird和Goose,即同時(shí)繼承了父類Bird的fly方法,以及父類Goose的swim方法?!菊f明】多個(gè)父類名用逗號(hào)間隔,表示子類同時(shí)繼承多個(gè)父類的屬性和方法。PartFour愛心募捐——實(shí)例變量和類變量掌握實(shí)例變量的定義和使用掌握類變量的定義和使用任務(wù)描述【任務(wù)描述】設(shè)計(jì)一個(gè)募捐類,統(tǒng)計(jì)輸出實(shí)時(shí)捐款金額和明細(xì)。該項(xiàng)任務(wù)涉及實(shí)例變量和類變量。實(shí)例變量就是屬于對(duì)象(實(shí)例)的變量(屬性),每個(gè)對(duì)象均有屬于自己的獨(dú)立實(shí)例變量。而類變量屬于整個(gè)類的所有對(duì)象所共有,即“公共空間”。相信同學(xué)們對(duì)于什么是實(shí)例變量和類變量還是一頭霧水,讓我們一起進(jìn)入實(shí)例變量和類變量的學(xué)習(xí)中吧!實(shí)例變量實(shí)例變量是指在類的任意方法內(nèi)部,以self開頭定義的變量(屬性)。實(shí)例變量定義self.變量名語法格式實(shí)例變量只能通過對(duì)象名訪問,不能通過類名訪問。訪問方式
實(shí)例變量【案例】閱讀以下代碼,分析其中的實(shí)例變量?!痉治觥吭陬愔械娜我夥椒▋?nèi)以“self.變量名”定義和使用的變量均為“實(shí)例變量”,故該類構(gòu)造方法中的、self.age、self.__score這三個(gè)以self開頭的變量均是實(shí)例變量。運(yùn)行結(jié)果展示了同一個(gè)類`Stu`的不同對(duì)象`s1`和`s2`各自擁有獨(dú)立的私有實(shí)例變量`self.__score`。它們是各自獨(dú)立、互不影響的,即都有自己的獨(dú)立存儲(chǔ)空間和值。類變量是指在類的所有方法之外定義的變量。定義01語法格式02類變量既可以通過類名訪問,也可以通過對(duì)象名訪問,建議通過類名訪問訪問方式03類變量類變量【案例】閱讀以下代碼,分析其中的類變量和實(shí)例變量。這段代碼中的`Rect`類展示了類變量和實(shí)例變量的區(qū)別:`cnt`是類變量,用于統(tǒng)計(jì)創(chuàng)建的`Rect`對(duì)象數(shù)量,所有對(duì)象共享;而`self.w`和`self.h`是實(shí)例變量,每個(gè)`Rect`對(duì)象擁有獨(dú)立的寬度和高度值。通過類名或?qū)ο竺L問類變量`cnt`,可以獲取創(chuàng)建對(duì)象的總數(shù)。str.center的使用字符串center方法返回指定總寬度width且居中的字符串,fillchar為填充字符,默認(rèn)為空格。調(diào)用格式為:【案例1】字符串內(nèi)容(如“歡迎光臨”)為偶數(shù)(4)位,輸出總位寬為(11),其余填充符7(奇數(shù))位,則左邊多1個(gè)填充符。運(yùn)行結(jié)果如下:str.center的使用【案例2】字符串內(nèi)容(如“南京歡迎您”)為奇數(shù)(5)位,輸出總位寬(12),其余填充符7(奇數(shù))位,則右邊多1個(gè)填充符。這兩個(gè)案例說明了如果填充字符的總數(shù)是奇數(shù),center()會(huì)在兩邊分配填充字符,但會(huì)多放一個(gè)在一側(cè),以確保字符串在中間。哪一側(cè)更長(zhǎng)取決于總寬度和字符串長(zhǎng)度的差值。如果填充字符的總數(shù)是偶數(shù),則兩側(cè)分配的填充字符數(shù)量相等。運(yùn)行結(jié)果如下:任務(wù)實(shí)施運(yùn)行結(jié)果如下:在循環(huán)內(nèi)部,為每個(gè)捐款者創(chuàng)建一個(gè)Donate類的實(shí)例。調(diào)用每個(gè)捐款者實(shí)例的donate方法,傳入隨機(jī)生成的捐款金額,更新捐款總額。donate方法接受一個(gè)參數(shù)num(捐款金額),并將其加到類變量total上,從而更新捐款總額。PartFive項(xiàng)目實(shí)施項(xiàng)目實(shí)施swim方法讓動(dòng)物在其邊界內(nèi)隨機(jī)移動(dòng),如果碰到邊界會(huì)反彈,并且每次移動(dòng)會(huì)消耗動(dòng)物的體力。項(xiàng)目實(shí)施Turtle類繼承自Animal類,表示烏龜,并添加了特有的eat方法來模擬烏龜吃魚后體力的增加,但不超過100。Fish類繼承自Animal類,表示魚,并添加了特有的bubble方法來模擬魚吐泡泡的動(dòng)作。創(chuàng)建了一只烏龜和10條魚,并將魚存儲(chǔ)在列表fish_ls中。項(xiàng)目實(shí)施如果魚和烏龜在同一位置,烏龜會(huì)吃掉魚,并從魚的列表
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 野生動(dòng)物疫病監(jiān)測(cè)與獸醫(yī)公共衛(wèi)生考核試卷
- 軟件測(cè)試工程師考試輕松掌握試題及答案
- 焙烤食品制造企業(yè)的營銷渠道與客戶關(guān)系管理考核試卷
- 公路工程生態(tài)設(shè)計(jì)理念試題及答案
- 船舶設(shè)計(jì)與仿真技術(shù)考核試卷
- 嵌入式開發(fā)實(shí)現(xiàn)中的思維方式探討試題及答案
- 現(xiàn)代數(shù)據(jù)庫與網(wǎng)絡(luò)服務(wù)整合試題及答案
- 大學(xué)公寓社區(qū)管理制度
- 公司現(xiàn)場(chǎng)定置管理制度
- 計(jì)算機(jī)二級(jí)MySQL實(shí)務(wù)題目及答案
- 2025年度全國大學(xué)生創(chuàng)新創(chuàng)業(yè)競(jìng)賽項(xiàng)目保密承諾書3篇
- DB33T 2288-2020 淡水池塘養(yǎng)殖尾水處理技術(shù)規(guī)范
- 中資出海企業(yè)數(shù)字化發(fā)展(亞太)藍(lán)皮報(bào)告(2024年)
- 安保工作的多元化發(fā)展
- 【MOOC】人格與精神障礙-學(xué)做自己的心理醫(yī)生-暨南大學(xué) 中國大學(xué)慕課MOOC答案
- 中學(xué)生體育運(yùn)動(dòng)損傷的預(yù)防和處理
- 新能源汽車電氣系統(tǒng)檢修(微課版) 課件 項(xiàng)目二任務(wù)2無鑰匙進(jìn)入和起動(dòng)系統(tǒng)
- 生成式人工智能講解
- 林權(quán)投資合作協(xié)議范本
- 中醫(yī)康復(fù)治療技術(shù)習(xí)題+參考答案
- 北京聯(lián)合大學(xué)《Java面向?qū)ο蟪绦蛟O(shè)計(jì)》2022-2023學(xué)年期末試卷
評(píng)論
0/150
提交評(píng)論