鱼C论坛

 找回密码
 立即注册
楼主: wei_Y

[技术交流] #鱼C五周年狂欢预热#第二弹(已结束)

[复制链接]
发表于 2015-1-12 22:38:12 | 显示全部楼层
本帖最后由 挥舞乾坤 于 2015-1-12 22:49 编辑
import re
def twist(s):
    d = {',':'.','!':'?','(':')','{':'}','[':']','<':'>','@':'#',';':':'}
    d.update({'0':'9','1':'8','2':'7','3':'6','4':'5'})
    d.update(dict(map(lambda t:(t[1],t[0]),d.items())))
    s = re.sub(r'(?P<w>[a-zA-Z]+)',lambda ss:ss.group('w')[::-1],s)
    s = list((re.sub(r'\s+',' ',s)).swapcase())
    return ''.join(list(map(lambda x: d[x] if x in d else x,s)))
本来不想用正则,但是发现好像行不通,先发了再想
版本3.4.2

点评

我很赞同!: 5.0
我很赞同!: 5
呦西,目前最好~。  发表于 2015-1-13 11:37

评分

参与人数 1鱼币 +20 收起 理由
wei_Y + 20 一会介哥发~。

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-13 03:37:44 | 显示全部楼层
本帖最后由 小甲鱼的二师兄 于 2015-1-13 03:39 编辑

想了半天......

198个字符,3行:
import re
def twist(a):
    return ''.join(re.sub(r'\s+',' ',re.sub(r'(?P<w>[a-zA-Z]+)',lambda b:b.group('w')[::-1],a).translate(''.maketrans(',!({[<@;0123456789','.?)}]>#:9876543210')).swapcase()))



点评

我很赞同!: 3.0
我很赞同!: 3
每行不超过80个字符,二师伯要注意规则呀~~~。  发表于 2015-1-13 11:16

评分

参与人数 1鱼币 +5 收起 理由
wei_Y + 5 二师伯,虽然很精简,不过除了行数的要求还.

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-1-13 09:04:52 | 显示全部楼层

回帖奖励 +2 鱼币

支持~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-1-13 09:30:10 | 显示全部楼层
本帖最后由 小龙_h 于 2015-1-13 09:48 编辑
小甲鱼的二师兄 发表于 2015-1-13 03:37
想了半天......

198个字符,3行:

学习了,好精简啊!
不过符号转换那一块有问题,要求是相互转换的啊,你的改成这样就好了
def twist(a):
    return ''.join(re.sub(r'\s+',' ',re.sub(r'(?P<w>[a-zA-Z]+)',lambda b:b.group('w')[::-1],a).translate(''.maketrans(',!({[<@;0123456789.?)}]>#:','.?)}]>#:9876543210,!({[<@;')).swapcase()))
发现str.translate(),好强大哦,当时想用来着,就是不太会用maketrans(),后来放弃了。。。
^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-13 09:35:46 | 显示全部楼层
挥舞乾坤 发表于 2015-1-12 22:38
本来不想用正则,但是发现好像行不通,先发了再想
版本3.4.2

好厉害,学习了。。。:loveliness:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-13 10:22:03 | 显示全部楼层
小甲鱼的二师兄 发表于 2015-1-13 03:37
想了半天......

198个字符,3行:

精简,学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-13 12:27:28 | 显示全部楼层
本帖最后由 小甲鱼的二师兄 于 2015-1-13 12:31 编辑

好的,严格按照要求修改后:
import re
def twist(a):
    return ''.join(re.sub(r'\s+',' ',re.sub(r'(?P<w>[a-zA-Z]+)',\
            lambda b:b.group('w')[::-1],a).translate(''.maketrans\
            (',!({[<@;0123456789.?)}]>#:','.?)}]>#:9876543210,!({[<@;')).swapcase()))



点评

我很赞同!: 5.0
我很赞同!: 5
二师伯稳稳的第一了~~。  发表于 2015-1-13 12:42
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-13 12:33:37 | 显示全部楼层
小龙_h 发表于 2015-1-13 09:30
学习了,好精简啊!
不过符号转换那一块有问题,要求是相互转换的啊,你的改成这样就好了发现str.transl ...

谢谢兄弟,主要是斑竹大人提醒我不要再用字典了~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-13 13:47:14 | 显示全部楼层
本帖最后由 ajian0117 于 2015-1-13 16:46 编辑

试下,这样吧。。。。
import re
def convertChar(s):
    dicts = {',':'.','!':'?','(':')','{':'}','[':']','<':'>','@':'#',';':':'}
    s = list(re.sub(' +', ' ', s[::-1]))
    for i in range(0,len(s)):
        if s in dicts.keys():s = dicts[s]
        if s.isdigit(): s = str(9 - int(s))
    return ''.join(s).swapcase()
if __name__ == '__main__':
    #str1 = 'te,!({[<@;   s       tABC0123456789'
    str1 = input("Please input:")
    str1 = convertChar(str1)
    print(str1)

....新手,后面的规则没实现
赚点分,继续学习。

评分

参与人数 1鱼币 +5 收起 理由
wei_Y + 5 加油~.

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-13 17:43:15 | 显示全部楼层
借鉴二师兄的translate()方法,再次简化
import re
w=',!({[<@;9876543210:#>]})?.';m=w[::-1];r=re.compile;p=r(r'([\W\d]+)');
def twist(s):return ''.join(list(map(lambda x:x[::-1] if x.isalpha() else \
    r('\s+').sub(' ',x),p.split(s.swapcase().translate(s.maketrans(w,m))))))

评分

参与人数 1鱼币 +5 收起 理由
wei_Y + 5 嗯~不过已经在统计了。

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-13 19:52:12 | 显示全部楼层
小甲鱼的二师兄 发表于 2015-1-13 12:27
好的,严格按照要求修改后:

完全是欺负,不懂字符方面的手法~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-13 20:18:05 | 显示全部楼层

回帖奖励 +2 鱼币

支持一下!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-13 20:37:43 | 显示全部楼层
我太幸运了,谢谢~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-13 21:07:15 | 显示全部楼层

回帖奖励 +2 鱼币

【招生】15PB 软件安全培训开始接受第006期报名(3.10开课)!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-13 22:22:40 | 显示全部楼层
小甲鱼的二师兄 发表于 2015-1-13 12:27
好的,严格按照要求修改后:

佩服。还没学到正则,等会了一定回来学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-13 22:41:06 | 显示全部楼层

回帖奖励 +2 鱼币

强烈支持哦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-14 09:51:03 | 显示全部楼层

回帖奖励 +2 鱼币

支持一下!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-14 10:41:22 | 显示全部楼层

回帖奖励 +2 鱼币

求鱼币,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-14 16:49:35 | 显示全部楼层

回帖奖励 +2 鱼币

支持一下!!15PB都来这宣传了啊~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-14 17:41:41 | 显示全部楼层
回复下啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-18 03:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表