日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python CheckiO 题解】Text Editor

發(fā)布時間:2023/12/10 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python CheckiO 题解】Text Editor 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

CheckiO 是面向初學者和高級程序員的編碼游戲,使用 Python 和 JavaScript 解決棘手的挑戰(zhàn)和有趣的任務,從而提高你的編碼技能,本博客主要記錄自己用 Python 在闖關時的做題思路和實現(xiàn)代碼,同時也學習學習其他大神寫的代碼。

CheckiO 官網(wǎng):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】:在此任務中,您將創(chuàng)建一個支持版本控制系統(tǒng)的文本編輯器原型,該原型將允許保存文本的不同版本并還原其中的任何一個;您的任務是創(chuàng)建2個類:Text 和 SavedText,第一個將處理文本(添加,更改字體等),第二個將控制版本并保存它們。

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/

【輸入】:有關文本和保存副本的信息

【輸出】:執(zhí)行所有命令過后的文本

【前提】:保存的副本不超過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 "

代碼實現(xiàn)

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]

總結(jié)

以上是生活随笔為你收集整理的【Python CheckiO 题解】Text Editor的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。