用Python做一個(gè)簡單的圖書管理系統(tǒng)
制定步驟
1、進(jìn)入提示語:
為了制作一個(gè)友好的“圖書管理系統(tǒng)”,先列出所有功能的菜單。如下:
print(""" *************************** * 歡迎進(jìn)入圖書管理系統(tǒng) * * 0 .退出 * * 1 .列出所有書籍 * * 2 .添加書籍 * * 3 .修改書籍 * * 4 .刪除書籍 * * 5 .借書 * * 6 .還書 * *************************** """)
2、獲取用戶輸入:
第二步,用戶會(huì)輸入 0~6 的整數(shù),以對應(yīng)相對的功能。如果用戶輸入錯(cuò)誤,輸出“輸入錯(cuò)誤,請重新輸入”。
while True: n=input("輸入序號(hào)(0-6):") if n=="0": pass elif n=="1": pass elif n=="2": pass elif n=="3": pass elif n=="4": pass elif n=="5": pass elif n=="6": pass else: print("輸入錯(cuò)誤,請重新輸入") print("") #表示換一行
擴(kuò)展:
很多語言都提供了“空語句”支持。Python 也不例外,Python 的 pass 語句就是空語句。
有時(shí)候程序需要占一個(gè)位、放一條語句,但又不希望這條語句做任何事情,此時(shí)就可通過 pass 語句來實(shí)現(xiàn)。通過使用 pass 語句,可以讓程序更完整。
如下程序示范了 pass 作為空語句的用法:
s=int(input("請輸入一個(gè)整數(shù): ")) if s>5: print("大于5") elif s<5: pass # 相當(dāng)于占位符 else: print("等于5")
正如從上面程序所看到的,對于 s 小于 5 的情形,程序暫時(shí)不處理(或不知道如何處理),此時(shí)程序就需要通過空語句來占一個(gè)位,這樣即可使用 pass 語句了。
3、完善各指令程序
如:用戶輸入“0”,即不但需要告訴用戶“已退出程序”,還要完成“退出”功能,代碼如下:
if n=="0": print("退出成功") break
再比如:用戶輸入“5”( 借書 ),如果庫存仍有,提示“借書成功”,并減少此書庫存。否則提示“庫存不足”。如下程序:
elif n=="5": xh=intinput() book=books[xh-1] if book["num"]>0: book["num"]-=1 print("借書成功") else: print("庫存不足")
請參照以上代碼,完善其他功能。
4、優(yōu)化程序,使代碼更簡潔
可以定義函數(shù),并循環(huán)使用函數(shù),有助于代碼的簡潔性。如代碼:
def intinput(n="請輸入序號(hào):"): while True: s=input(n) if s.isnumeric(): return int(s) else: print("請輸入整數(shù)")
擴(kuò)展:
str.isnumeric() 方法:
檢測字符串是否只由數(shù)字組成。這種方法是只針對 unicode 對象。
函數(shù)參數(shù)含義與注意事項(xiàng):
各部分參數(shù)的含義如下:
- 函數(shù)名:其實(shí)就是一個(gè)符合 Python 語法的標(biāo)識(shí)符,但不建議讀者使用 a、b、c 這類簡單的標(biāo)識(shí)符作為函數(shù)名,函數(shù)名最好能夠體現(xiàn)出該函數(shù)的功能(如上面的 my_len,即表示我們自定義的 len() 函數(shù))。
- 形參列表:設(shè)置該函數(shù)可以接收多少個(gè)參數(shù),多個(gè)參數(shù)之間用逗號(hào)( , )分隔。
- [return [返回值] ]:整體作為函數(shù)的可選參參數(shù),用于設(shè)置該函數(shù)的返回值。也就是說,一個(gè)函數(shù),可以用返回值,也可以沒有返回值,是否需要根據(jù)實(shí)際情況而定。
注:在創(chuàng)建函數(shù)時(shí),即使函數(shù)不需要參數(shù),也必須保留一對空的“()”,否則 Python 解釋器將提示“invaild syntax”錯(cuò)誤。另外,如果想定義一個(gè)沒有任何功能的空函數(shù),可以使用 pass 語句作為占位符。
函數(shù)的優(yōu)點(diǎn):
- 在python之中使用函數(shù)最大和最直觀的優(yōu)點(diǎn)就是可以將一段代碼封裝起來以便隨時(shí)調(diào)用,這樣能夠極大的提高了程序的簡潔性和可讀性,還可以讓代碼的邏輯性更加清晰。
- 一般來說使用函數(shù)去封裝的代碼塊都是去實(shí)現(xiàn)某一種功能的,而被封裝成函數(shù)的代碼就能夠不斷地去重復(fù)的調(diào)用。這樣既可以提高python程序的開發(fā)效率,還可以減少一些不必要代碼的編寫。
- 函數(shù)還有優(yōu)點(diǎn)就是它其實(shí)是一個(gè)獨(dú)立于其他外部代碼的模塊,在一個(gè)python程序去執(zhí)行時(shí)如果不手動(dòng)的去調(diào)用函數(shù)的話那么這個(gè)函數(shù)是不會(huì)去執(zhí)行的。而當(dāng)函數(shù)之中出現(xiàn)了錯(cuò)誤的時(shí)候也很容易的就能夠去進(jìn)行修改而不會(huì)對程序的運(yùn)行造成太大的影響,很好的實(shí)現(xiàn)了模塊化。
- python函數(shù)還可以直接保存在一個(gè)py文件之中然后以模塊的方式去導(dǎo)入,這樣一個(gè)通用的編寫好的python函數(shù)就能夠運(yùn)用在很多不同的程序之中,經(jīng)常使用的內(nèi)置模塊和python第三方庫內(nèi)其實(shí)存儲(chǔ)的就是一個(gè)個(gè)函數(shù)。
圖書管理系統(tǒng)所有代碼:
def intinput(n="請輸入序號(hào):"): while True: s=input(n) if s.isnumeric(): return int(s) else: print("請輸入整數(shù)") books=[{"name":"Scratch","isbn":"12345","num":2}, {"name":"Python","isbn":"12346","num":5}] print(""" *************************** * 歡迎進(jìn)入圖書管理系統(tǒng) * * 0 .退出 * * 1 .列出所有書籍 * * 2 .添加書籍 * * 3 .修改書籍 * * 4 .刪除書籍 * * 5 .借書 * * 6 .還書 * *************************** """) while True: n=input("輸入序號(hào)(0-6):") if n=="0": print("退出成功") break elif n=="1": print("序號(hào)\t書名\t書號(hào)\t數(shù)量") index=1 for book in books: print("%d\t%s\t%s\t%d"%(index,book["name"],book["isbn"],book["num"])) index+=1 elif n=="2": book=dict() book["name"]=input("請輸入書名:") book["isbn"]=input("請輸入書號(hào):") book["num"]=intinput("請輸入數(shù)量:") books.append(book) print("添加成功") elif n=="3": try: xh=intinput() book=books[xh-1] book["name"]=input("請輸入書名:") book["isbn"]=input("請輸入書號(hào):") book["num"]=intinput("請輸入數(shù)量:") print("修改成功") except: print("出錯(cuò)了") elif n=="4": s=intinput() if 1<=s<=len(books): del books[xh-1] print("刪除成功") else: print("超出范圍") elif n=="5": xh=intinput() book=books[xh-1] if book["num"]>0: book["num"]-=1 print("借書成功") else: print("庫存不足") elif n=="6": xh=intinput() try: book=books[xh-1] book["num"]-=1 print("還書成功") except: print("未查詢到書本") else: print("輸入錯(cuò)誤,請重新輸入") print("")
到此這篇關(guān)于用Python做一個(gè)簡單的圖書管理系統(tǒng)的文章就介紹到這了,更多相關(guān)Python圖書管理系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python爬取用戶觀影數(shù)據(jù)并分析用戶與電影之間的隱藏信息!
看電影前很多人都喜歡去 『豆瓣』 看影評,所以我爬取44130條 『豆瓣』 的用戶觀影數(shù)據(jù),分析用戶之間的關(guān)系,電影之間的聯(lián)系,以及用戶和電影之間的隱藏關(guān)系,需要的朋友可以參考下2021-06-06Python學(xué)習(xí)筆記之字符串和字符串方法實(shí)例詳解
這篇文章主要介紹了Python學(xué)習(xí)筆記之字符串和字符串方法,結(jié)合實(shí)例形式詳細(xì)分析了Python字符串相關(guān)操作函數(shù)與使用技巧,需要的朋友可以參考下2019-08-08django修改models重建數(shù)據(jù)庫的操作
這篇文章主要介紹了django修改models重建數(shù)據(jù)庫的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03Pipenv輕量級(jí)虛擬環(huán)境管理工具使用指南
這篇文章主要為大家介紹了Pipenv輕量級(jí)虛擬環(huán)境管理工具使用指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Python+matplotlib+numpy繪制精美的條形統(tǒng)計(jì)圖
這篇文章主要介紹了Python+matplotlib+numpy繪制精美的條形統(tǒng)計(jì)圖,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)-堆棧和隊(duì)列的操作方法
隊(duì)、棧和鏈表一樣,在數(shù)據(jù)結(jié)構(gòu)中非?;A(chǔ)一種數(shù)據(jù)結(jié)構(gòu),同樣他們也有各種各樣、五花八門的變形和實(shí)現(xiàn)方式。這篇文章主要介紹了Python 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)-堆棧和隊(duì)列的操作方法,需要的朋友可以參考下2019-07-07python制作爬蟲并將抓取結(jié)果保存到excel中
本文給大家記錄的是使用Python制作爬蟲爬取拉勾網(wǎng)信息并將結(jié)果保存到Excel中的實(shí)現(xiàn)思路及方法,并附上最終源碼,有需要的小伙伴可以參考下2016-04-04OpenCV-Python實(shí)現(xiàn)通用形態(tài)學(xué)函數(shù)
本文將結(jié)合實(shí)例代碼,介紹OpenCV-Python實(shí)現(xiàn)通用形態(tài)學(xué)函數(shù),包含開運(yùn)算,閉運(yùn)算等復(fù)雜的形態(tài)學(xué)運(yùn)算,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06