基于类的命令行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,一经查实,立即删除!

相关文章

2020年五大云计算预测

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

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

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

(转)HTTP 长连接和短连接

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

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

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

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

如何克服量子计算机运转时产生的超高热量仍是量子计算机研究当中的一大难题。日前,科学家开发出一种新型的低温计算机芯片,能够在接近绝对零度的理论温度极限下工作。这种名为 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…

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

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

Nature好文:过去150年,科学与产业经历四段情缘!

来源:Nature 574, 481-485 (2019) doi: 10.1038/d41586-019-03172-5Nature(《自然》)创刊 150 周年之际,历史学家保罗卢西尔(Paul Lucier)特别撰写系列文章,回顾了这 150 年来科学体系的塑造。本…

python爬取网页有乱码怎么解决_Python爬取网页requests乱码

**之前有在裁判文书上爬取数据,这段时间重新运行爬虫后发现无法获取网页数据, 找了一下发现requests网页源码返回的是乱码** (如下截取一部分返回的数据:不知道是不是网站对网页内容进行了加密,请问如何解决这个问题&a…

北京联合大学计算机学院在哪个校区,北京联合大学各校区联系地址大全

出国留学网考研院校频道为大家提供北京联合大学各校区联系地址大全,希望能帮助到大家。北京联合大学下设14所学院:北京联合大学应用文理学院 地址:海淀区北土城西路197号 邮编:100191北京联合大学师范学院 地址:朝阳区…

Gartner 2019年超融合魔力象限:新增深信服,国内华为、华云在榜

来源:云头条近日,国际权威研究分析机构Gartner公布了2019全球《超融合基础设施魔力象限》。报告显示国内仅有三家云计算厂商进入2019超融合基础设施魔力象限,分别是深信服、华为、华云数据。深信服超融合(sangfor aCloud&#xff…

万维网之父公布拯救网络计划:保护互联网免遭滥用,惠及人类

来源:澎湃新闻万维网之父蒂姆伯纳斯-李爵士(Sir Tim Berners-Lee)公布了一项拯救网络的全球计划,呼吁政府和企业能够阻止对互联网的滥用,保护互联网免受政治操纵、假新闻、侵犯隐私等其他威胁。这项计划名为《互联网契…

mybatis insert 重复数据2条_Mybatis框架lt;增gt;:添加一条数据到数据库中,insert...

在以上框架中,前面所搭建好的框架全部固定好,接下来,我们在此基础上实现功能使用insert添加一条数据到数据库中(1)在UserMapper接口中添加对应方法,//在数据库表中增添一条数据,返回为int类型,参数传递Usee…

python语言程序设计基础嵩天答案第二章_python语言程序设计基础(嵩天版),第二章程序练习题...

python语言程序设计基础(嵩天版),第二章程序练习题 欢迎访问江南烧酒的博客 2.2汇率兑换程序。按照1美元6人民币汇率编写一个美元和人民币的双向兑换程序。 """ 2.2汇率兑换程序,美元和人民币 """ …

边缘数据中心维护的4个基本组件

来源:外电翻译边缘数据中心设施运行与数据中心相同的通用计算硬件,其中包括存储和网络设备。企业经常将边缘数据中心部署在非传统位置,例如移动通信基站、工厂车间,甚至是在野外。边缘数据中心为现场多个设备提供管理层&#xff0…

XidianOJ 1195 Industry of Orz Pandas

--正文 贪心 排序好慢慢找就好 #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; typedef long long LL;int a[20001],b[20001]; int n,m,x; int main(){while (scanf("%d %d %d",&…

js设计一个带开关的时钟_数电题:三个按键一个灯

有这样一道数电题&#xff1a;一个LED发光二极管由A、B、C三个独立按键控制&#xff0c;要求按压A、B、C三个按键中的任意一个都能对LED实现亮、灭控制(即每按压一次按键&#xff0c;LED发光状态改变一次)。请用D触发器或JK触发器实现&#xff0c;画出逻辑电路图&#xff0c;说…

从火热到理性,2019年AI芯片行业发展的怎么样了?【附PPT下载】

来源&#xff1a;艾瑞咨询AI芯片大家已经非常熟悉了&#xff0c;经过几年的发展&#xff0c;其技术噱头时代已经过去。转眼2019年即将过去&#xff0c;AI芯片究竟发展的怎么样了&#xff1f;今天就推荐艾瑞咨询的《AI芯片行业研究报告2019》&#xff0c;从五个角度展开&#xf…