给程序加上控制台菜单
menu.py
importsysfrom notebook importNotebook, NoteclassMenu:'''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
}defdisplay_menu(self):print("""Notebook Menu
1. Show all Notes
2. Search Notes
3. Add Note
4. Modify Note
5. Quit""")defrun(self):'''Display the menu and respond to choices.'''
whileTrue:
self.display_menu()
choice= input("Enter an option:")
action=self.choices.get(choice)ifaction:
action()else:print("{0} is not a valid choice".format(choice))def show_all_notes(self, notes=None):if notnotes:
notes=self.notebook.notesfor note innotes:print("{0}: {1} {2}".format(
note.id, note.tags, note.memo))print("*********************************")def show_notes(self, notes=None):if notnotes:
notes=self.notebook.search_notesfor note innotes:print("{0}: {1} {2}".format(
note.id, note.tags, note.memo))print("*********************************")defsearch_notes(self):
filter= input("Search for:")
search_notes=self.notebook.search(filter)#print(notes)
self.show_notes(search_notes)defadd_note(self):
memo= input("Enter a memo:")
self.notebook.new_note(memo)print("Your note has been added.")defmodify_note(self):
id= int(input("Enter a note id:"))
memo= input("Enter a memo:")
tags= input("Enter tags:")ifmemo:
self.notebook.modify_memo(id, memo)iftags:
self.notebook.modify_tags(id, tags)defquit(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 ... Enter an option: 1 1: 1 aa ********************************* 2: hello ... Enter an option: 5 Thank you for using your notebook today.