Python面向对象编程 - 一个记事本程序范例(二)
给程序加上控制台菜单
menu.py
import sys from notebook import Notebook, Note class Menu: '''Display a menu and respond to choices when run.''' def __init__(self): self.notebook = Notebook() self.choices = { "1": self.show_all_notes, "2": self.search_notes, "3": self.add_note, "4": self.modify_note, "5": self.quit } def display_menu(self): print(""" Notebook Menu 1. Show all Notes 2. Search Notes 3. Add Note 4. Modify Note 5. Quit """) def run(self): '''Display the menu and respond to choices.''' while True: self.display_menu() choice = input("Enter an option: ") action = self.choices.get(choice) if action: action() else: print("{0} is not a valid choice".format(choice)) def show_all_notes(self, notes=None): if not notes: notes = self.notebook.notes for note in notes: print("{0}: {1} {2}".format( note.id, note.tags, note.memo)) print("*********************************") def show_notes(self, notes=None): if not notes: notes = self.notebook.search_notes for note in notes: print("{0}: {1} {2}".format( note.id, note.tags, note.memo)) print("*********************************") def search_notes(self): filter = input("Search for: ") search_notes = self.notebook.search(filter) #print(notes) self.show_notes(search_notes) def add_note(self): memo = input("Enter a memo: ") self.notebook.new_note(memo) print("Your note has been added.") def modify_note(self): id = int(input("Enter a note id: ")) memo = input("Enter a memo: ") tags = input("Enter tags: ") if memo: self.notebook.modify_memo(id, memo) if tags: self.notebook.modify_tags(id, tags) def quit(self): print("Thank you for using your notebook today.") sys.exit(0) if __name__ == "__main__": Menu().run()
运行结果:
Notebook Menu
1. Show all Notes 2. Search Notes 3. Add Note 4. Modify Note 5. Quit
Enter an option: 3 Enter a memo: test Your note has been added. ... Enter an option: 3 Enter a memo: hello Your note has been added.
Enter an option: 1 1: test ********************************* 2: hello ********************************* ... Enter an option: 2 Search for: hel 2: hello ********************************* ... Enter an option: 4 Enter a note id: 1 Enter a memo: aa Enter tags: 1 <notebook.Note object at 0x02B80FB0> ... Enter an option: 1 1: 1 aa ********************************* 2: hello ... Enter an option: 5 Thank you for using your notebook today.
技术改变世界