第一步:標准化先獲得信息
#coding=utf-8 import traceback import pickle import os import os.path class GRLlibrary(object): '''huiziz的圖書館''' def __init__(self,name,location): self.name=name self.location=location self.book_list=[] #獲取圖書館的基本信息 def get_library_info(self): info="名字:%s\n地點:%s"%(self.name,self.location) return info #只有當文件本身被執行【被當做模塊被其他程序引用】的時候,才會執行if里面的代碼[下面代碼的作用] if __name__=="__main__": gr_library=GRLlibrary("光榮之路北京圖書館","北京") print (gr_library.get_library_info())
運行結果:
E:\workspace-python\test>py -3 a.py
名字:光榮之路北京圖書館
地點:北京
第二步:打印出command命令
class Book(object): def __init__(self,name,author,tag,price): self.__name = name self.__author = author self.__tag = tag self.__price = price def get_book_name(self): return self.__name def set_book_name(self,new_name): self.__name = new_name def book_info(self): print(self.name,self.author,self.tag,self.price) class GRLibrary(object): '''吳老師創建的創建的光榮之路圖書館!''' def __init__(self,name,location): self.name = name self.location = location def get_library_info(self): info = "名字:%s \n地點:%s" %(self.name,self.location) return info def list_info(): print(""" 圖書館可以輸入如下命令進行操作: create:創建圖書館 use:使用某個圖書館 add:增加圖書 borrow:借閱圖書 lend:還書 list:查看庫中的圖書列表 search:查看庫中是否存在某本書 """) library = None def create(library_name,location): global library library = GRLibrary(library_name,location) if __name__ == "__main__": list_info() #gr_library = GRLibrary("光榮之路北京圖書館","北京") #print(gr_library.get_library_info())
運行結果:
E:\workspace-python\test>py -3 a.py
圖書館可以輸入如下命令進行操作:
create:創建圖書館
use:使用某個圖書館
add:增加圖書
borrow:借閱圖書
lend:還書
list:查看庫中的圖書列表
search:查看庫中是否存在某本書
第三步:實現創建圖書館、添加圖書、查看庫中圖書列表-雛形
import traceback import pickle class Book(object): def __init__(self,name,author,tag,price): self.__name = name self.__author = author self.__tag = tag self.__price = price def get_book_name(self): return self.__name def set_book_name(self,new_name): self.__name = new_name def book_info(self): print(self.name,self.author,self.tag,self.price) class GRLibrary(object): '''吳老師創建的創建的光榮之路圖書館!''' def __init__(self,name,location): self.name = name self.location = location self.book_list=[] def get_library_info(self): info = "名字:%s \n地點:%s" %(self.name,self.location) return info def add(self,book): self.book_list.append(book) #print ("%s圖書入庫成功"%book.get_book_name()) def list(self): for book in self.book_list: #print (book) #我寫的 print (book.get_book_name()) #獲取每本書的書名 def list_info(): print(""" 圖書館可以輸入如下命令進行操作: create:創建圖書館 use:使用某個圖書館 add:增加圖書 borrow:借閱圖書 lend:還書 list:查看庫中的圖書列表 search:查看庫中是否存在某本書 exit:退出 """) library = None def create_library(): global library library_name=input("請輸入圖書館的名字:").strip() location=input("請輸入圖書館的地址:").strip() library = GRLibrary(library_name,location) ####這個定義...嗯 print (("********"+"["+"%s"+"]"+"圖書館創建成功"+"********")%library_name) def add_book(): book_name=input("請輸入書名:").strip() author_name=input("請輸入作者名:").strip() tag=input("請輸入分類:").strip() price=input("請輸入書的價格:").strip() book=Book(book_name,author_name,tag,price) if library is not None: library.add(book) print (("********"+"["+"%s"+"]"+"圖書入庫成功"+"********")%book_name) else: print ("圖書館還未創建,請輸入create命令進行創建!") def list_book(): if library is not None: print ("圖書列表為:") library.list() command={"create":"create_library","add":"add_book","list":"list_book"} #前面對應list_info中的值,后面對應要調用的方法 if __name__ == "__main__": list_info() while 1: try: user_command=input("請輸入操作命令:").lower().strip() if user_command=="exit": break eval(command[user_command]+"()") #執行程序:輸入的東西+user_command就可以調用函數了 except: traceback.print_exc() #打印報錯的堆棧信息 if user_command not in command: print ("您輸入的命令不存在") else: print ("您輸入的命令有誤,請按照命令列表輸入:") print (list_info()) #gr_library = GRLibrary("光榮之路北京圖書館","北京") #print(gr_library.get_library_info())
運行結果:
E:\workspace-python\test>py -3 a.py 圖書館可以輸入如下命令進行操作: create:創建圖書館 use:使用某個圖書館 add:增加圖書 borrow:借閱圖書 lend:還書 list:查看庫中的圖書列表 search:查看庫中是否存在某本書 exit:退出 請輸入操作命令:create 請輸入圖書館的名字:zita 請輸入圖書館的地址:虹口 ********[zita]圖書館創建成功******** 請輸入操作命令:add 請輸入書名:測試開發 請輸入作者名:吳老師 請輸入分類:測試 請輸入書的價格:68 ********[測試開發]圖書入庫成功******** 請輸入操作命令:add 請輸入書名:自動化測試 請輸入作者名:吳老師 請輸入分類:測試 請輸入書的價格:99 ********[自動化測試]圖書入庫成功******** 請輸入操作命令:list 圖書列表為: 測試開發 自動化測試
終極:寫入文件+添加注釋
import traceback import pickle import os import os.path class Book(object): def __init__(self,name,author,tag,price): #定義4個書的實例變量 self.__name = name self.__author = author self.__tag = tag self.__price = price def get_book_name(self): return self.__name def set_book_name(self,new_name): self.__name = new_name def book_info(self): print(self.name,self.author,self.tag,self.price) class GRLibrary(object): '''吳老師創建的創建的光榮之路圖書館!''' def __init__(self,name,location): self.name = name self.location = location self.book_list=[] #存儲所有的書的實例對象 def get_library_info(self): info = "名字:%s \n地點:%s" %(self.name,self.location) return info def add(self,book): self.book_list.append(book) #print ("%s圖書入庫成功"%book.get_book_name()) def list(self): for book in self.book_list: #print (book) #我寫的 print (book.get_book_name()) #獲取每本書的書名 def find(self): book_search=input("請輸入要查找書的名字:") for book in self.book_list: if book.get_book_name()==book_search: print ("找到了%s"%book_search) break else: print ("沒有找到%s"%book_search) def list_info(): print(""" 圖書館可以輸入如下命令進行操作: create:創建圖書館 use:使用某個圖書館 add:增加圖書 borrow:借閱圖書 lend:還書 list:查看庫中的圖書列表 find:查看庫中是否存在某本書 exit:退出 """) library = None library_data_file_path="" #封裝了一個函數,這個函數實質上是在操作實例對象。所有要輸入的參數通過命令行的方式讓用戶輸入,然后再操作類。這個設計模式叫代理 #一個函數把這個類的所有操作都實現了 def create_library(): global library library_name=input("請輸入圖書館的名字:").strip() location=input("請輸入圖書館的地址:").strip() library = GRLibrary(library_name,location) ####這個定義...嗯 print ("圖書館創建成功") def use_library(): global library global data_file_path data_file_path=input("請輸入圖書館數據文件的位置:").strip() if os.path.exists(data_file_path): try: fp=open(data_file_path,"rb") library=pickle.load(fp) ###盲點。通過pickle模塊的反序列化操作,從文件中創建上一次程序保存的對象。 library_data_file_path=data_file_path #庫恢復出來了 except: print ("圖書館的數據文件沒有合法的數據") def add_book(): book_name=input("請輸入書名:").strip() author_name=input("請輸入作者名:").strip() tag=input("請輸入分類:").strip() price=input("請輸入書的價格:").strip() book=Book(book_name,author_name,tag,price) if library is not None: library.add(book) print (("["+"%s"+"]"+"圖書入庫成功")%book_name) else: print ("圖書館還未創建,請輸入create命令進行創建!") def list_book(): if library is not None: library.list() def find_book(): global library if library is not None: library.find() command={"create":"create_library","add":"add_book","list":"list_book","use":"use_library","find":"find_book"} #前面對應list_info中的值,后面對應要調用的方法 if __name__ == "__main__": list_info() while 1: try: user_command=input("請輸入操作命令:").lower().strip() if user_command=="exit": if library_data_file_path=="": library_data_file_path=input("請輸入保存圖書館數據的數據文件路徑:") fp= open(library_data_file_path,"wb") if library is not None: pickle.dump(library,fp) #序列化。通過pickle模塊的序列化操作將程序中運行的對象信息保存到文件中去,永久存儲 fp.close() break eval(command[user_command]+"()") #執行程序:輸入的東西+user_command就可以調用函數了 except: traceback.print_exc() #打印報錯的堆棧信息,調試用 if user_command not in command: print ("您輸入的命令不存在") else: print ("您輸入的命令有誤,請按照命令列表輸入:") print (list_info()) continue
運行結果:
E:\workspace-python\test>py -3 a.py 圖書館可以輸入如下命令進行操作: create:創建圖書館 use:使用某個圖書館 add:增加圖書 borrow:借閱圖書 lend:還書 list:查看庫中的圖書列表 find:查看庫中是否存在某本書 exit:退出 請輸入操作命令:create 請輸入圖書館的名字:zita 請輸入圖書館的地址:虹口 圖書館創建成功 請輸入操作命令:add 請輸入書名:測試開發 請輸入作者名:吳老師 請輸入分類:測試 請輸入書的價格:68 [測試開發]圖書入庫成功 請輸入操作命令:add 請輸入書名:自動化測試 請輸入作者名:吳老師 請輸入分類:測試 請輸入書的價格:99 [自動化測試]圖書入庫成功 請輸入操作命令:list 測試開發 自動化測試 請輸入操作命令:exit 請輸入保存圖書館數據的數據文件路徑:e:\\a.py E:\workspace-python\test>py -3 a.py 圖書館可以輸入如下命令進行操作: create:創建圖書館 use:使用某個圖書館 add:增加圖書 borrow:借閱圖書 lend:還書 list:查看庫中的圖書列表 find:查看庫中是否存在某本書 exit:退出 請輸入操作命令:use 請輸入圖書館數據文件的位置:e:\\a.py 請輸入操作命令:list 測試開發 自動化測試