基于类的命令行notebook的实现

在看一本书《PYTHON3 面向对象编程》

内容丰富,作作记录。

notebook.py

__author__ = 'chengang882'import datetime# Store the next available id for all new note
last_id = 0class Note(object):"""Represent a note in the notebook. Match against astring in searches and store tags for each note."""def __init__(self, memo, tags=''):"""initialize a note with memo and optionalspace-separated tags. Automatically set the note'screation date and a unique id."""self.memo = memoself.tags = tagsself.creation_date = datetime.date.today()global last_idlast_id += 1self.id = last_iddef match(self, filter):"""Determine if this note matches the filtertext. Return True if it matches, False otherwise.Search is case sensitive and matches both text andtags."""return filter in self.memo or filter in self.tagsclass Notebook(object):def __init__(self):self.notes = []def new_note(self, memo, tags=''):self.notes.append(Note(memo, tags))def _find_note(self, note_id):for note in self.notes:if str(note.id) == str(note_id):return notereturn Nonedef modify_memo(self, note_id, memo):note = self._find_note(note_id)if note:note.memo = memoreturn Truereturn Falsedef modify_tags(self, note_id, tags):self._find_note(note_id).tags = tagsdef search(self, filter):return [note for note in self.notes ifnote.match(filter)]

 

menu.py

__author__ = 'chengang882'import sys
from notebook import Notebook, Noteclass Menu:def __init__(self):self.notebook = Notebook()self.choices = {"1": self.show_notes,"2": self.search_notes,"3": self.add_note,"4": self.modify_note,"5": self.quit}def display_menu(self):print("""Notebook Menu1. Show all Notes2. Search Notes3. Add Note4. Modify Note5. Quit""")def run(self):while True:self.display_menu()choice = raw_input("Enter an option: ")action = self.choices.get(str(choice))if action:action()else:print("{0} is note a valid choice".format(choice))def show_notes(self, notes=None):if not notes:notes = self.notebook.notesfor note in notes:print("{0}: {1}\n{2}".format(note.id, note.tags, note.memo))def search_notes(self):filter = raw_input("Search for: ")notes = self.notebook.search(filter)self.show_notes(notes)def add_note(self):memo = raw_input("Enter a memo: ")print(memo)self.notebook.new_note(memo)print("Your note has been added.")def modify_note(self):id = raw_input("Enter a note id: ")memo = raw_input("Enter a memo: ")tags = raw_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()

转载于:https://www.cnblogs.com/aguncn/p/6177939.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中用socket检测端口_python基于socket函数实现端口扫描

本文实例为大家分享了python基于socket实现端口扫描的具体代码,供大家参考,具体内容如下自学Python一段时间,写个端口扫描器练练手。有什么不足之处,请见谅这是基于socket函数对端口进行端口扫描所以,首先要导入socket…

php清理html table样式,Parse HTML Table - PHP [closed]

问题Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.Want to improve this question? Update the question so its on-topic for Stack Overflow.Closed 6 years ago.I have an HTML table that I would like to par…

2020年五大云计算预测

来源:信息安全与通信保密杂志社Forrester的新报告发现,超大规模云联盟、云原生创新和新的云安全要求将在2020年重塑云计算行业格局。Forrester近日发布了一份报告,对2020年的云计算行业发布了五大预测。这些预测表明争夺云计算霸主地位的竞争…

ResourceManager里面Trackingui需要手动该ip

C:\Windows\System32\drivers\etc这个路径下配置了ip和主机名,不过是大小写,ping不同,不论ping大小写还是全部小写都不行,我看地址栏是小写所以想着把hosts里CentOSMaster改成centosmaster,然后还是不行,备…

qt中的mysql能存入多少行数据_Qt中提高sqlite的读写速度(使用事务一次性写入100万条数据)...

SQLite数据库本质上来讲就是一个磁盘上的文件,所以一切的数据库操作其实都会转化为对文件的操作,而频繁的文件操作将会是一个很好时的过程,会极大地影响数据库存取的速度。例如:向数据库中插入100万条数据,在默认的情况…

计算机英语一级考试试题,全国计算机一级考试试题及答案

单选题1.( )是指连入网络的不同档次、不同型号的微机,它是网络中实际为用户操作的工作平台,它通过插在微机上的网卡和连接电缆与网络服务器相连。 答案:A 难:2A、网络工作站 B、网络服务器 C、传输介质 D、网络操作系统2.通过Internet发送或接收电子邮件…

薛建儒:无人车的场景理解与自主运动

来源:人工智能前沿讲习一报告导读本文为西安交通大学人工智能与机器人研究所薛建儒教授,做的题为无人车场景计算与自主运动的研究进展的报告,主要从无人车概述、场景理解、自主运动、总结与展望四个方面介绍了其团队在无人驾驶领域的探索。在…

(转)HTTP 长连接和短连接

1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包&#xff…

ddr4服务器内存频率_金士顿DDR4-3200服务器内存通过完整测试

全面支持第二代AMD EPYC处理器2019年8月13日北京讯,全球存储领袖金士顿今天宣布旗下Server Premier系列DDR4-3200 Registered DIMMs内存将支持第二代AMD EPYC™服务器处理器。最新款金士顿Server Premier内存频率高达3200MT/s,提供8GB、16GB和32GB三种容…

html 链接section,HTML section 标签

HTML 标签是HTML5新增的语义化标签之一。关于语义化标签的概念与作用可以参阅HTML 语义化布局概述一章节。**一.标签作用:**此标签的功能与标签比较类似,两者联系与区别简单总结如下:(1).可以认为是特殊。(2).更加强调独立性,语义…

中美科技成果转化比较分析

来源:创新研究近年来随着国家在不断加大科技投入,以及专利成果数量的快速增长,全社会对科技创新关注程度不断提高,对我国科技成果转化率低的批评不断增加,有文章指出“我国科技成果的转化率仅有10%,比美国8…

bh1750采集流程图_重大更新:STM32空气监测仪,OneNET物联网平台实时查看(原理图、PCB源文件、程序源码等)...

更新内容:一、SD卡记录功能。自动识别有无SD卡,支持4G以下SD卡。下图为SD卡记录的数据。以日期为文件名自动创建文件。记录格式为:时间,PM1.0,PM2.5,PM10,温度,湿度,大气…

商用计算机低温工作,突破量子计算机瓶颈!超低温芯片能在接近绝对零度的温度下工作...

如何克服量子计算机运转时产生的超高热量仍是量子计算机研究当中的一大难题。日前,科学家开发出一种新型的低温计算机芯片,能够在接近绝对零度的理论温度极限下工作。这种名为 Gooseberry 的低温系统为量子计算领域的革命奠定了基础——使新一代机器能够…

python自动化测试开发_基于python的selenium2自动化测试从基础到实战(Python3、selenium2、自动化测试、web测试)...

Selenium2是目前比较流行的一款针对web页面测试的自动化测试工具,他的前身是Selenium 。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite等。但是目前使用Selenium2做测试的基本是采用ja…

虚拟机安装CentOS6.4

1 概述 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,运行在主机上,完全独立,虚拟机里面的所有操作不会影响主机,即使虚拟机崩溃了&#x…

中国人工智能产业白皮书

来源:北京物联网智能技术应用协会未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测&#xff1…

api laravel 统一返回方法_Laravel API 错误处理:当异常时,如何返回消息

image基于 API 的项目开发越来越受欢迎,并且使用 Laravel 就能很容易实现。但是在针对如何处理各种异常的话题很少被提及。所以 API 的使用者们经常会抱怨除了收到 Server error ,很少有更多的错误信息。那么,我们该如何优雅的处理 API 错误让…

计算机电力英语翻译,电力专业英语阅读与翻译..doc

电力专业英语阅读与翻译.电力专业英语阅读与翻译Summary of glossary 术语电力系统 (electric) power systempower generation 发电transmission system(network) 输电系统(网络)distribution system 配电系统发电 power generationpower plant 发电厂powerhouse 发电站hydropo…

python基础笔记_python基础学习笔记

一、Python四种类型的数据格式 整数----2、3、 长整数:指的是比较大一点的整数 浮点数----3.23、52.3EE:标记表示10的幂。 复数----(-54J)、(2.3-4.6J) 二、Python字符串 a 单引号:单引号输出字符串,字符串…