【Python CheckiO 题解】Text Editor


CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。

CheckiO 官网:https://checkio.org/

我的 CheckiO 主页:https://py.checkio.org/user/TRHX/

CheckiO 题解系列专栏:https://itrhx.blog.csdn.net/category_9536424.html

CheckiO 所有题解源代码:https://github.com/TRHX/Python-CheckiO-Exercise


题目描述

【Text Editor】:在此任务中,您将创建一个支持版本控制系统的文本编辑器原型,该原型将允许保存文本的不同版本并还原其中的任何一个;您的任务是创建2个类:TextSavedText,第一个将处理文本(添加,更改字体等),第二个将控制版本并保存它们。

Text 类应该具有以下方法:

  • write:将(text)添加到当前文本;

  • set_font:设置字体,字体将应用于整个文本,字体显示在文本之前和之后的方括号中: [Arial] ... example ... [Arial],可以多次指定字体,但是只显示最后一个设置的字体;

  • show:返回当前文本和字体(如果已设置了字体);

  • restore:恢复所选版本的文本。

SavedText 类应具有以下方法:

  • save_text:保存当前文本和字体,保存的第一个版本的编号为0,第二个版本的编号为1,依此类推;

  • get_version:此方法与“restore”方法一起使用,用于选择所需的文本版本。

【链接】:https://py.checkio.org/mission/text-editor/

【输入】:有关文本和保存副本的信息

【输出】:执行所有命令过后的文本

【前提】:保存的副本不超过10个

【范例】

text = Text()
saver = SavedText()text.write("At the very beginning ")
saver.save_text(text)
text.set_font("Arial")
saver.save_text(text)
text.write("there was nothing.")
text.show() == "[Arial]At the very beginning there was nothing.[Arial]"text.restore(saver.get_version(0))
text.show() == "At the very beginning "

代码实现

import copyclass Text:def __init__(self):self.text = ''self.font = ''def write(self, text):self.text += textdef set_font(self, font):self.font = fontdef show(self):if self.font != '':font = '[' + self.font + ']'else:font = ''return '{}{}{}'.format(font, self.text, font)def restore(self, text):self.text = text.textself.font = text.fontclass SavedText:def __init__(self):self.text2 = {}self.last_version = 0def save_text(self, text):self.text2[self.last_version] = copy.copy(text)self.last_version += 1def get_version(self, version):return self.text2[version]if __name__ == '__main__':#These "asserts" using only for self-checking and not necessary for auto-testingtext = Text()saver = SavedText()text.write("At the very beginning ")saver.save_text(text)text.set_font("Arial")saver.save_text(text)text.write("there was nothing.")assert text.show() == "[Arial]At the very beginning there was nothing.[Arial]"text.restore(saver.get_version(0))assert text.show() == "At the very beginning "print("Coding complete? Let's try tests!")

大神解答

大神解答 NO.1

class Text:__init__ = lambda self, text='', font='': vars(self).update(locals())write    = lambda self, value: vars(self).update({'text': self.text+value})set_font = lambda self, font: vars(self).update({'font': font})show     = lambda self: "[{0}]{1}[{0}]".format(self.font, self.text) if self.font else self.textrestore  = lambda self, item: vars(self).update({'text': item.text, 'font': item.font})class SavedText:__init__    = lambda self: vars(self).update({'history': []})save_text   = lambda self, item: vars(self).update({'history': self.history+[Text(item.text, item.font)]})get_version = lambda self, version: self.history[version]

大神解答 NO.2

class Text:text = font = ''def write(self, text):self.text += textdef restore(self, old):self.text, self.font = olddef set_font(self, font):self.font = f'[{font}]'def show(self):return f'{self.font}{self.text}{self.font}'class SavedText(list):get_version = list.__getitem__def save_text(self, text):self.append((text.text, text.font))

大神解答 NO.3

class Text:def __init__(self):self._storage = []self._font = ""@propertydef storage(self):return self._storage@propertydef font(self):return self._font @font.setterdef font(self, value):self._font = valuedef set_font(self, value):self.font = valuedef write(self, text):self._storage.append(text)def show(self):text = "".join(self._storage)if self._font:return "[{1}]{0}[{1}]".format(text, self._font)return textdef restore(self, version):self._storage, self._font = versionclass SavedText:def __init__(self):self._versions = []def save_text(self, text):self._versions.append((text.storage[:], text.font))         def get_version(self, version):return self._versions[version]

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

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

相关文章

使用VS code 创建 Azure Functions,从blob触发,解析,发送至Service Bus

场景: 某设备定时于每天23:00左右将一天的运行日志.devicelogtxt上传到Azure Blob,期待Blob文件上传后, 自动通过Azure Functions 解析文件并将文件内容写入到服务总线Service Bus的队列中。 上传的文件格式为: 步骤: 下载并安装…

【Python CheckiO 题解】Remove Accents

CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。 Chec…

Power Platform之Power Automate新增RPA功能

​ 什么是RPA RPA( Robotic Process Automation 机器人流程自动化软件),是一种新型的人工智能的虚拟流程自动化机器人。RPA的核心是通过自动化、智能化技术来“替代人”进行重复性、低价值、无需人工决策等固定性流程化操作,从而…

【Python CheckiO 题解】Count Consecutive Summers

CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。 Chec…

Hyper-V第1代虚拟机和第2代虚拟机特性对照表

本文《Hyper-V第1代虚拟机和第2代虚拟机特性对照表》系小编在小伟博客看到的文档,转载给大家一起学习。 在 Windows Server 2012 R2 和 Windows 8.1 中内置的 Hyper-V 功能,新增了一种“第二代”虚拟机,从虚拟硬件的层面进行了提升&#xff0…

【Python CheckiO 题解】Speech Module

CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。 Chec…

Dynamics 365 Online和On-premises在开发方式上的差别

1、新建账号的不同:on-premises(下文简称op)是和ad绑定的,所以必须先在ad中新建账号后才能在CRM中新建。而online是和Office365(下文简称O365)绑定的,所以需在O365中新建账号再分配D365许可(前提是已购买license),当分配完许可后,…

【Python CheckiO 题解】Time Converter (12h to 24h)

CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。 Chec…

【转】Dynamics 365 On-Premise Server v9.0部署体验

期盼已久的Dynamics 365 On-Premise的版本升级终于在11月初姗姗来迟。 11月2日起已经可以在官方渠道下载正式版的Dynamics 365 Server v9.0安装文件,版本号9.0.2,随手附上中文版安装文件下载地址。 想必已经有不少小伙伴开始尝试各种升级、安装了吧。 …

【Python CheckiO 题解】Multicolored Lamp

CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。 Chec…

【转】五大方法,彻底永久关闭win10自动更新的方法【已验证有效】

自从微软大面积使用某员工后,思路越来越奇葩了,前天工作没做完,放在那里,第二天毫无羞耻的就给你重启了,那一瞬间,真想拿dollar到对面slay。于是就有下文,大部分内容是从网上摘录、归纳起来的。…

【Python CheckiO 题解】Probably Dice

CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。 Chec…

【Python CheckiO 题解】Roman Numerals

CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。 Chec…

Dynamics CRM 2016 安装

Dynamics CRM 2016 安装 CRM 2016出来了一段时间了,一直也没机会尝试一下,现在再测试ADFS的时候顺手装一个测试环境,记录一下整个安装配置流程。 首先准备好windows 2012 std,sql server 2014, dynamics crm2016安装…

【Python CheckiO 题解】Largest Rectangle in a Histogram

CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。 Chec…

Dynamics 365 on-premises 安装

安装Dynamics 365环境配置要求: 系统版本:Windows Server 2016 SQL 版本: Microsoft SQL Server 2016 SP2 Dynamics 365 版本:CRM9.0-Server-CHS-amd64 安装步骤: 一.在虚拟机安装Windows Server 2016 二.安装好…

【Python CheckiO 题解】Date and Time Converter

CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。 Chec…

2.1Dynamics 365 安装问题——无法访MSCRM_CONFIG数据库

1. 问题 2. 原因 出现此问题的一个或多个下列条件都为真︰ 在多务器中安装 Microsoft Dynamics 365。然后,直接在运行 Microsoft SQL Server 的服务器上安装 Microsoft Dynamics 365。但是,没有设置某些 SQL Server 权限。Mic…

【Python CheckiO 题解】Army Battles

CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。 Chec…

Dynamics 365 On-premises和Online 的不同

1、新建账号的不同:on-premises(下文简称op)是和ad绑定的,所以必须先在ad中新建账号后才能在CRM中新建。而online是和Office365(下文简称O365)绑定的,所以需在O365中新建账号再分配D365许可(前提是已购买license),当分配完许可后,…