7-3 6翻了 (15 分)——python写法简单直接,带注释

“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)

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值