“666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字“27”,因为这是 3 个 “9”!
本题就请你编写程序,将那些过时的、只会用一连串“6666……6”表达仰慕的句子,翻译成最新的高级表达。
输入格式:
输入在一行中给出一句话,即一个非空字符串,由不超过 1000 个英文字母、数字和空格组成,以回车结束。
输出格式:
从左到右扫描输入的句子:如果句子中有超过 3 个连续的 6,则将这串连续的 6 替换成 9;但如果有超过 9 个连续的 6,则将这串连续的 6 替换成 27。其他内容不受影响,原样输出。
输入样例:
it is so 666 really 6666 what else can I say 6666666666
输出样例:
it is so 666 really 9 what else can I say 27
做题心得:一开始做得时候,没正确理解题目意思,直接把句子分割成列表后,循环判断每一项有没有6,然后数长度,按照题目直接替换列表的那一项,可想而知,有2个测试点过不了只有13分。后来百度,但一直百度不到Python的写法,就看人家写的从c,c++的,还是没能写出来,但在这期间到是理解题目意思了,是要连续的6,而且可能在中间连续,可能出现1666897666666这样前面3个6要原样输出,但后面几个6是符合替换的要求的,就一直卡在一个点,怎么都想不出来改怎么写了,后来问了队里其他人,才知道需要用python的正则表达式写法,其实之间课程内容并没有讲正则用法,做题也确实想不到,一去看,这是真的好用,最后写下来才几行代码,后来找到其他python的写法,好多行,又一直判断判断,还是这个好写,嗯,做题还是累积到经验的,加油吧!(哈哈哈,废话有点多,但做得过程真的好扎心,改来改去,一直有测试点过不了,人都要崩溃了,改到后来,都没法思考了,加油吧,少年人!)
python正则表达式用法链接:Python3 正则表达式 | 菜鸟教程
最后的代码:
import re
s = input()
word1 = re.sub(r"['6']{10,}", '27', s) # 先匹配有连续超过9个的,即以10个起步匹配,替换成27
word2 = re.sub(r"['6']{4,}", '9', word1) # 再对替换后的句子匹配连续超过3个的6,以4起步,这时超过9个得已经被替换了,以免混乱
print(word2)