Python程序設(shè)計項目化教程- 課件 項目六 烏龜吃魚游戲-面向?qū)ο骭第1頁
Python程序設(shè)計項目化教程- 課件 項目六 烏龜吃魚游戲-面向?qū)ο骭第2頁
Python程序設(shè)計項目化教程- 課件 項目六 烏龜吃魚游戲-面向?qū)ο骭第3頁
Python程序設(shè)計項目化教程- 課件 項目六 烏龜吃魚游戲-面向?qū)ο骭第4頁
Python程序設(shè)計項目化教程- 課件 項目六 烏龜吃魚游戲-面向?qū)ο骭第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目六烏龜吃魚游戲——面向?qū)ο髏extbook教材Python程序設(shè)計項目化教程孫海洋

編著

電子工業(yè)出版社ISBN:9787121477546項目描述【項目描述】模擬烏龜吃魚游戲,游戲規(guī)則:水池中有一只烏龜和若干條魚,烏龜和魚在水池中游動,如果烏龜遇到魚則把魚吃掉,生命值增加,烏龜游動消耗體力。如果池中所有的魚都被吃掉或者烏龜體力耗盡游戲結(jié)束。Contents目錄01.聰明的小狗——類和對象04.愛心募捐——實例變量和類變量02.莫問年齡和存款——私有成員03.生物進化——繼承05.項目實施06.項目小結(jié)PartOne聰明的小狗——類和對象掌握類定義結(jié)構(gòu)掌握構(gòu)造對象的方法掌握通過對象名調(diào)用屬性和行為的方式任務(wù)描述【任務(wù)描述】設(shè)計一個狗類,包含名字、品種、年齡等屬性,具備搖尾、趴下、打滾、奔跑等行為。運行結(jié)果如下所示。讓我們一起學習類和對象來解決這個問題吧!面向?qū)ο蠛皖?1面向?qū)ο缶幊蘋OP是一切皆對象,把具有相同屬性和行為的對象抽象為“類”。02面向?qū)ο笕筇匦詾榉庋b、繼承和多態(tài)。03類是編程中創(chuàng)建對象的模板,用class定義,擁有屬性存儲信息和方法執(zhí)行操作。面向?qū)ο蠛皖悺绢惗x格式1】含構(gòu)造方法【類定義格式2】不含構(gòu)造方法,系統(tǒng)提供默認的無參構(gòu)造方法【說明】在Python中,構(gòu)造方法`__init__`用于初始化新創(chuàng)建的對象,為其屬性賦初值。如果沒有顯式定義構(gòu)造方法(僅含有self)。析構(gòu)方法`__del__`在對象被刪除時自動調(diào)用。類中的方法通常以`self`作為第一個參數(shù),代表當前對象實例,其余參數(shù)根據(jù)需要定義。下面,我們來舉幾個例子幫助大家更好理解面向?qū)ο蠛皖悺景咐?】定義一個學生類,包括姓名、年齡、班級等屬性,以及自我介紹方法。【案例2】定義一個鳥類Bird,僅包含飛行方法,不含構(gòu)造方法。創(chuàng)建對象構(gòu)造類的對象時,通過類的名字調(diào)用構(gòu)造方法__init__,為該對象的數(shù)據(jù)成員即屬性賦初值。如果類中沒有顯式定義構(gòu)造方法或者定義的構(gòu)造方法除了self外,沒有其他參數(shù),則創(chuàng)建該類對象的格式如下:舉例:在這個例子中,Bird類沒有定義構(gòu)造方法,因此Python自動提供了一個默認的無參構(gòu)造方法。當我們創(chuàng)建Bird類的對象b時,我們使用Bird(),括號內(nèi)是空的,表示沒有傳遞任何參數(shù)。然后我們可以調(diào)用b對象的fly方法來模擬鳥的飛行行為。創(chuàng)建對象若類中定義的構(gòu)造方法除了self外還有其他參數(shù),則創(chuàng)建該類對象格式如下:舉例:在這個例子中,Student類有一個構(gòu)造方法__init__,它接受三個參數(shù):name、age和class_info。創(chuàng)建Student類的對象s1和s2時,需要提供這些參數(shù)的值。然后,我們可以通過調(diào)用introduce方法來打印每個學生的信息。通過對象訪問屬性和行為訪問對象屬性的格式如下:舉例:在這個例子中,Student類有三個屬性:name、age和cls。我們創(chuàng)建了兩個Student類的對象s1和s2,并且為它們的屬性賦了初值。然后,我們通過點操作符訪問這些屬性,并使用print函數(shù)輸出它們的值。通過對象訪問屬性和行為訪問對象行為的格式如下:舉例:在這個例子中,我們定義了一個Student類,它有一個構(gòu)造方法和一個introduce方法。我們創(chuàng)建了一個Student對象student,并調(diào)用了它的introduce方法來打印自我介紹。任務(wù)實施__init__是類的構(gòu)造方法,用于初始化創(chuàng)建的對象。它接受breed(品種)、name(名字)和age(年齡)作為參數(shù),并將它們設(shè)置為對象的屬性。speak方法用于模擬小狗的自我介紹,打印出小狗的品種、名字和年齡。wag方法模擬小狗搖尾巴的動作,打印出搖尾巴的小狗的名字。lie方法模擬小狗趴下的動作,打印出趴下的小狗的名字。roll_over方法模擬小狗打滾的動作,打印出打滾的小狗的名字。run方法模擬小狗跑步的動作,參數(shù)dis表示距離(米),并打印出小狗的名字和跑的距離。任務(wù)實施創(chuàng)建了兩個Dog類的對象dog1和dog2,分別代表兩個不同品種和名字的小狗,以及它們的年齡。調(diào)用各類方法運行結(jié)果如下:鞏固案例【案例】定義一個圓類,包含屬性半徑,及求周長和面積的方法。參考代碼:PartTwo莫問年齡和存款——私有成員任務(wù)描述【任務(wù)描述】設(shè)計一個Python個人信息類。創(chuàng)建一個Person類,封裝姓名、私有的年齡、分數(shù)和存款。實現(xiàn)方法以輸出個人信息、安全地獲取和設(shè)置分數(shù)、以及模擬賺錢和花錢。在主程序中演示這些功能。讓我們一起學習一下私有成員屬性來完成這個任務(wù)吧!私有成員屬性Python類中的屬性默認是公開的,可以自由訪問和修改,這可能違反封裝原則并降低安全性。為了提供封裝和數(shù)據(jù)保護,Python使用雙下劃線`__`前綴來定義私有屬性,如`__weight`和`__score`。私有屬性只能在類內(nèi)部訪問,外部代碼不能直接訪問它們。通常,類會提供公共的`get_屬性名`和`set_屬性名`方法來間接訪問和修改這些私有屬性?!惧e誤案例】試圖在類外直接訪問私有成員屬性。私有成員屬性【正確案例】通過set***和get***方法可在類外間接訪問私有屬性。定義了一個公開方法getWeight,用于獲取私有屬性__weight的值。定義了一個公開方法setWeight,它接受一個參數(shù)newWeight,用于設(shè)置私有屬性__weight的新值。newWeight將傳入的newWeight值賦給私有屬性__weight。調(diào)用setWeight方法,將體重修改為59.5公斤。任務(wù)實施__init__是構(gòu)造方法,初始化Person對象的屬性。接受姓名、年齡、分數(shù)和金錢作為參數(shù),并將它們設(shè)置為對象的屬性。其中,年齡、分數(shù)和金錢屬性名前使用了雙下劃線__,這表示它們是私有屬性。speak方法用于打印出人的姓名、年齡、分數(shù)和余額。返回私有屬性__age的值和私有屬性__score的值。setSc方法接受一個新分數(shù)newSc,先打印出修改前的成績,然后更新成績,并打印出修改后的成績。任務(wù)實施spend方法接受一個金額amount,將其從余額中減去,并打印出花錢后的信息和當前余額。運行結(jié)果如下:PartThree生物進化——繼承掌握類的定義結(jié)構(gòu)掌握構(gòu)造對象的方法掌握通過對象名調(diào)用屬性和行為的方式單繼承單類繼承的格式為:pass表示占位符,通常表示暫時沒實現(xiàn)的函數(shù)(方法)體或類體。子類默認繼承父類的非私有屬性和方法。直接調(diào)用從父類繼承過來的方法為不重寫父類方法—直接繼承單繼承在子類中重寫父類中的同名方法,相當于把從父類繼承過來的該方法覆蓋掉。該方法為重寫父類方法—方法覆蓋運行結(jié)果為:多重繼承多重繼承是子類擁有多個父類,可同時繼承多個父類的屬性和方法。其格式為:【案例】閱讀以下程序,分析其運行結(jié)果?!痉治觥孔宇怱wan擁有兩個父類Bird和Goose,即同時繼承了父類Bird的fly方法,以及父類Goose的swim方法。【說明】多個父類名用逗號間隔,表示子類同時繼承多個父類的屬性和方法。PartFour愛心募捐——實例變量和類變量掌握實例變量的定義和使用掌握類變量的定義和使用任務(wù)描述【任務(wù)描述】設(shè)計一個募捐類,統(tǒng)計輸出實時捐款金額和明細。該項任務(wù)涉及實例變量和類變量。實例變量就是屬于對象(實例)的變量(屬性),每個對象均有屬于自己的獨立實例變量。而類變量屬于整個類的所有對象所共有,即“公共空間”。相信同學們對于什么是實例變量和類變量還是一頭霧水,讓我們一起進入實例變量和類變量的學習中吧!實例變量實例變量是指在類的任意方法內(nèi)部,以self開頭定義的變量(屬性)。實例變量定義self.變量名語法格式實例變量只能通過對象名訪問,不能通過類名訪問。訪問方式

實例變量【案例】閱讀以下代碼,分析其中的實例變量。【分析】在類中的任意方法內(nèi)以“self.變量名”定義和使用的變量均為“實例變量”,故該類構(gòu)造方法中的、self.age、self.__score這三個以self開頭的變量均是實例變量。運行結(jié)果展示了同一個類`Stu`的不同對象`s1`和`s2`各自擁有獨立的私有實例變量`self.__score`。它們是各自獨立、互不影響的,即都有自己的獨立存儲空間和值。類變量是指在類的所有方法之外定義的變量。定義01語法格式02類變量既可以通過類名訪問,也可以通過對象名訪問,建議通過類名訪問訪問方式03類變量類變量【案例】閱讀以下代碼,分析其中的類變量和實例變量。這段代碼中的`Rect`類展示了類變量和實例變量的區(qū)別:`cnt`是類變量,用于統(tǒng)計創(chuàng)建的`Rect`對象數(shù)量,所有對象共享;而`self.w`和`self.h`是實例變量,每個`Rect`對象擁有獨立的寬度和高度值。通過類名或?qū)ο竺L問類變量`cnt`,可以獲取創(chuàng)建對象的總數(shù)。str.center的使用字符串center方法返回指定總寬度width且居中的字符串,fillchar為填充字符,默認為空格。調(diào)用格式為:【案例1】字符串內(nèi)容(如“歡迎光臨”)為偶數(shù)(4)位,輸出總位寬為(11),其余填充符7(奇數(shù))位,則左邊多1個填充符。運行結(jié)果如下:str.center的使用【案例2】字符串內(nèi)容(如“南京歡迎您”)為奇數(shù)(5)位,輸出總位寬(12),其余填充符7(奇數(shù))位,則右邊多1個填充符。這兩個案例說明了如果填充字符的總數(shù)是奇數(shù),center()會在兩邊分配填充字符,但會多放一個在一側(cè),以確保字符串在中間。哪一側(cè)更長取決于總寬度和字符串長度的差值。如果填充字符的總數(shù)是偶數(shù),則兩側(cè)分配的填充字符數(shù)量相等。運行結(jié)果如下:任務(wù)實施運行結(jié)果如下:在循環(huán)內(nèi)部,為每個捐款者創(chuàng)建一個Donate類的實例。調(diào)用每個捐款者實例的donate方法,傳入隨機生成的捐款金額,更新捐款總額。donate方法接受一個參數(shù)num(捐款金額),并將其加到類變量total上,從而更新捐款總額。PartFive項目實施項目實施swim方法讓動物在其邊界內(nèi)隨機移動,如果碰到邊界會反彈,并且每次移動會消耗動物的體力。項目實施Turtle類繼承自Animal類,表示烏龜,并添加了特有的eat方法來模擬烏龜吃魚后體力的增加,但不超過100。Fish類繼承自Animal類,表示魚,并添加了特有的bubble方法來模擬魚吐泡泡的動作。創(chuàng)建了一只烏龜和10條魚,并將魚存儲在列表fish_ls中。項目實施如果魚和烏龜在同一位置,烏龜會吃掉魚,并從魚的列表

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論