農林漁牧網

您現在的位置是:首頁 > 畜牧業

風變程式設計-python基礎語法-第14關流浪圖書的旅途

2022-03-18由 2ⁿeⁿ·FeatureLoops 發表于 畜牧業

風變程式設計的python課程怎麼樣

這是這門課程的第三個專案實操,我們都知道學程式設計做專案實操最有效,而我們這次是做一個面向物件程式設計。我們可以先鞏固一下做專案的三個基本步驟,如圖示

風變程式設計-python基礎語法-第14關流浪圖書的旅途

1。 明確專案目標

1。1 咳咳,今天我們的任務可是帶有濃烈的人文氣息——編寫一個圖書管理系統的程式。先請我們的主人公登場,給我們講講他的需求吧。朋也是大學班上的文娛委員,他留意到周圍同學經常表達出希望“課餘生活能多看書”的意願,但苦於不知道要選什麼書看。思前想後,朋也決定啟動一個流浪圖書計劃:鼓勵同學們將自己中意的閒置圖書貢獻出來,形成一個小型的精品圖書庫,以供同學們免費借閱、流轉。為此他需要一個圖書管理系統,來幫助他管理書籍的借閱情況。他希望這個簡易的程式可以做到:如圖示

風變程式設計-python基礎語法-第14關流浪圖書的旅途

2。 分析過程,拆解專案

2。1在沒接觸類之前,如果碰到這樣的需求,我們會想到透過定義不同的函式來封裝不同的功能。這樣當然是可行的,只是可能會多費些功夫,老師建議你可以在課後嘗試一下。既然我們今天的主題是類,我們就只用面向物件程式設計來完成這個程式。因此,我們要思考:需要定義多少個類?每個類有怎樣的屬性和方法?回答之前,我們先來簡單總結一下:類的主要用法。

風變程式設計-python基礎語法-第14關流浪圖書的旅途

2。2回到專案:我們的處理物件是每本具體的書,而每本書都有自己的屬性資訊,所以我們可以定義一個Book類,利用Book類建立一個個書的例項,繫結屬性(對應用法1)。而這個管理系統的執行主體,是多個可供選擇的功能的疊加,所以我們可以建立一個系統執行類BookManager,將查詢書籍、新增書籍等功能封裝成類中的方法以供呼叫(對應用法2)。我們的預期效果是當例項化這個系統執行類的時候,會出現一個選單,能讓使用者選擇不同的功能,如下圖所示:

風變程式設計-python基礎語法-第14關流浪圖書的旅途

2。3 為了讓類的結構更清晰,我們可以將這個選擇選單也封裝成一個方法menu(),方便呼叫其他方法。那麼,將上述要編寫的兩個類整理一下,這個程式的骨架就是這樣:(註釋裡對應每個方法的功能)

風變程式設計-python基礎語法-第14關流浪圖書的旅途

3。 程式碼實現,逐步執行

3。1 定義Book類

根據需求,每本書的基本屬性都要有四個:書名、作家、推薦語和借閱狀態。所以,我們可以利用初始化方法__init__,讓例項被建立時自動獲得這些屬性。請你小試牛刀,寫出初始化方法的程式碼,確保後面兩行的程式碼能夠順利執行,打印出作者名卡爾維諾。

程式碼及其執行結果如圖示

風變程式設計-python基礎語法-第14關流浪圖書的旅途

為了後續方便引數傳遞,借閱狀態state採用預設引數,用0來表示‘未借出’,1來表示‘已借出’。程式碼及其執行結果如圖示

風變程式設計-python基礎語法-第14關流浪圖書的旅途

可以在初始化方法的基礎上定義一個show_info()方法,打印出每本書的資訊:程式碼及其執行結果如圖示

風變程式設計-python基礎語法-第14關流浪圖書的旅途

我們可以建立一個例項,呼叫該方法試試看。請你直接執行程式碼;程式碼及其執行結果如圖示(2圖)

風變程式設計-python基礎語法-第14關流浪圖書的旅途

風變程式設計-python基礎語法-第14關流浪圖書的旅途

Bingo!不過這裡老師要介紹一個更符合程式設計習慣的方法__str__(self)。

在Python中,如果方法名形式是左右帶雙下劃線的,那麼就屬於特殊方法(如初始化方法),有著特殊的功能。解釋一下:只要在類中定義了__str__(self)方法,那麼當使用print列印例項物件的時候,就會直接打印出在這個方法中return的資料。可能有點繞,看程式碼會直觀一點。我們直接把上述程式碼裡的方法名show_info(self)替換成__str__(self),留意最後一行呼叫的程式碼,然後點選執行:如圖示(2圖)

風變程式設計-python基礎語法-第14關流浪圖書的旅途

風變程式設計-python基礎語法-第14關流浪圖書的旅途

綜合以上全部程式碼,如圖示

風變程式設計-python基礎語法-第14關流浪圖書的旅途

3。2 定義類Manager

使用者輸入數字執行相應的功能,程式內部呼叫的邏輯應該是:如圖示

風變程式設計-python基礎語法-第14關流浪圖書的旅途

所以其程式碼框架應該是,如圖示

風變程式設計-python基礎語法-第14關流浪圖書的旅途

那麼我們就完成了menu()的定義,但目前還不能執行,是因為程式碼裡的許多方法我們還沒有定義,接下來我們就來一個個攻克。先來看看show_all_book()方法,它的功能是打印出系統裡所有書籍的資訊。為了方便除錯,驗證程式碼是否寫對了,我們可以先往書籍系統裡新增幾本書籍,也就是建立Book類的例項物件。

如圖示程式碼

風變程式設計-python基礎語法-第14關流浪圖書的旅途

當有多個物件的時候,就要考慮資料儲存的方式。由於每個Book例項是並列平行的關係,所以可以用列表來儲存。於是可以在類的開頭定義一個空列表books,方便其他方法呼叫,然後把剛剛建立的Book例項新增到這個列表裡。看程式碼:如圖示

風變程式設計-python基礎語法-第14關流浪圖書的旅途

3。2。1如此一來,列表books裡的每個元素都是基於Book類建立的例項物件,所以每個元素會自動擁有Book類的方法__str__。我們可以驗證一下:程式碼以及執行結果如圖示(只展示部分程式碼吧2圖)

風變程式設計-python基礎語法-第14關流浪圖書的旅途

風變程式設計-python基礎語法-第14關流浪圖書的旅途

發現了嗎?這個結果和我們想要定義的顯示書籍資訊的方法show_all_book()是一樣的,所以我們可以把最後幾行程式碼封裝成方法。如圖示

風變程式設計-python基礎語法-第14關流浪圖書的旅途

3。2。2完美!那麼列印書籍資訊的方法我們就講到這。接下來我們來看第二個功能:新增書籍add_book()。估摸著是時候給你練手的機會了。請你在下面程式碼的基礎上補充好add_book(self)的程式碼,嘗試錄入一本你喜歡的書,再跳回到查詢功能,看是否執行成功。(部分程式碼以及部分執行結果如圖示2圖)

風變程式設計-python基礎語法-第14關流浪圖書的旅途

風變程式設計-python基礎語法-第14關流浪圖書的旅途

以下是資料流轉圖,不明白的可以看註釋如圖示

風變程式設計-python基礎語法-第14關流浪圖書的旅途

3。2。3現在,想一想:借閱功能lend_book()要怎麼實現呢?可以先想想我們平時找人借東西,會出現哪幾種情況?一共有三種思路如圖示

風變程式設計-python基礎語法-第14關流浪圖書的旅途

首先,判斷在不在系統裡,我們可以採用遍歷書籍列表books的方式,一旦輸入的書籍名稱和列表元素中的書籍名稱出現匹配,就證明系統裡有這本書。其次,如果書在系統裡,有沒有被借走可以根據例項屬性state來判斷,0表示‘未借出’,1表示‘已借出’。(其部分程式碼如圖示)

風變程式設計-python基礎語法-第14關流浪圖書的旅途

程式碼是完成了,但歸還書籍的時候,也會碰到類似的邏輯。為了不寫重複的程式碼,我們可以額外在類中定義一個方法,專門檢查輸入的書名是否在書籍列表裡。所以check_book 可以作為單獨一個類方法寫出來,和借閱與歸還一起使用

3。2。4 return_book 程式碼如圖示

風變程式設計-python基礎語法-第14關流浪圖書的旅途

至此整個圖書管理系統就算是寫好了,程式碼量大概有八九十行,所以整個程式碼快可能展示不了了。

4。 1第14關課後練習

書的分類

練習介紹

練習目標

利用類的繼承,建立一個Book類的子類。

練習要求

在Book類的基礎上,建立一個子類FictionBook類表示虛構類圖書,並改造初始化方法,增加一個預設引數type = ‘虛構類’。

再利用str()方法打印出FictionBook類例項的相關資訊。

程式碼截圖以及執行結果如圖不完全展示(3圖)

風變程式設計-python基礎語法-第14關流浪圖書的旅途

風變程式設計-python基礎語法-第14關流浪圖書的旅途

風變程式設計-python基礎語法-第14關流浪圖書的旅途

4。2 進階練習——我想看TA的書

練習介紹

練習目標

在原有程式碼的基礎上做一些最佳化,讓使用者輸入作者名,就能打印出系統裡該作者所有書籍的相關資訊。

練習要求

新建一個類的方法,讓程式能夠根據作者名來展示相關書籍的資訊。

書寫程式碼

請你閱讀右側程式碼,在此基礎上,補充show_author_book()相關程式碼,實現根據作者名列印相關書籍資訊的功能。

因為程式碼已經建立好了3個Book例項,程式碼執行後預期實現效果:

輸入‘三毛’,系統就會打印出兩本書的相關資訊。

輸入‘毛姆’,系統就會打印出一本書的相關資訊。

輸入‘二毛’, 系統就會打印出‘很可惜,我們暫時沒有收錄這位作者的作品’

部分關鍵程式碼展示和整體程式碼執行結果(2圖)

風變程式設計-python基礎語法-第14關流浪圖書的旅途

風變程式設計-python基礎語法-第14關流浪圖書的旅途

——Directly made by 2n減大師