zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    如何查看MySQL的当前存储引擎?
    避免生产环境执行更新删除语句忘记加where条件的解决方案
    物联网发展的现状
    目前行业内比较流行的开源时序数据库产品
    如何查看端口(3306)被那个程序占用
    MySQL数据库开发的36条军规
    介绍 MySQL 8 中值得关注的新特性和改进。
    IE浏览器 兼容性(IE9-11 差异说明)
    python3:(unicode error) 'utf-8' codec can't decode
    静态代码块
  • 原文地址:https://www.cnblogs.com/davidgu/p/4855537.html
Copyright © 2011-2022 走看看