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]

【Python CheckiO 题解】Text Editor相关推荐

  1. Python CheckiO 题解系列 丨 博客目录索引

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本题解系列主要记录自己在用 Python 闯关时的做 ...

  2. 【Python CheckiO 题解】Striped Words

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  3. 【Python CheckiO 题解】Between Markers

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  4. 【Python CheckiO 题解】Between Markers (simplified)

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  5. 【Python CheckiO 题解】Popular Words

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  6. 【Python CheckiO 题解】First Word

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  7. 【Python CheckiO 题解】First Word (simplified)

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  8. 【Python CheckiO 题解】Second Index

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  9. 【Python CheckiO 题解】Right to Left

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

最新文章

  1. ArcGIS里shp文件连接Excel的字段,出现无法显示Excel里全部字段的问题
  2. 全网独发gensim中similarities.Similarity用法
  3. 趁热打铁-一次.Net WebService的性能优化之旅
  4. 剑与远征英雄兑换码如此少见,新玩家连抽获得数位英雄
  5. 网站的服务器区域可以造假吗,如何伪造DNS服务器?
  6. 用 Visual Studio 发布一个 Azure 云 Web 应用程序
  7. 抽象线程之Parallel类
  8. fe文件服务器,FE File Explorer
  9. python 字符串 4位一组_Python基础4- 字符串
  10. Linux less命令:查看文件内容
  11. 『线性同余方程和中国剩余定理』
  12. 周华健,歌声伴我成长(三)
  13. codis配置_Codis的安装配置
  14. active-class属于Vue哪一个modules,有什么作用
  15. mac查看进程与杀掉进程
  16. Linux CreateRepo创建Repomd (xml-rpm-metadata)存储库
  17. 国产内存真的来了:紫光可提供DDR3、DDR4内存芯片
  18. 将png图片转化为icon
  19. 二进制转十进制 八进制 十六进制
  20. 相机拍出来的图片有“水波纹”的原因

热门文章

  1. 第九周 10.25-10.31
  2. O-C相关-08-动态类型与静态类型
  3. 网站开发和企业级开发有什么区别?
  4. 博士期间要注意的几个问题
  5. POJ-3061 尺取
  6. 平面设计中的网格系统pdf_深入浅出,带你认识网格系统与版式设计
  7. python中的引用怎么理解_python 引用和对象理解
  8. 图像 pipeline_多面体优化,Pipeline与深度学习编译器
  9. python gui开发_python 开发GUI应用之Dabo
  10. 中职计算机说课稿三篇,精选中职计算机说课稿三篇-20210609060707.docx-原创力文档...