鱼C论坛

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

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

[复制链接]
头像被屏蔽
发表于 2015-1-12 15:06:18 | 显示全部楼层

回帖奖励 +2 鱼币

提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-12 17:29:51 | 显示全部楼层

回帖奖励 +2 鱼币

先支持一下,等下谢谢看

评分

参与人数 1鱼币 +30 收起 理由
wei_Y + 30

查看全部评分

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

使用道具 举报

发表于 2015-1-12 19:07:10 | 显示全部楼层

修改后的有问题么?我测试的木有问题啊
1.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-12 20:27:49 | 显示全部楼层

回帖奖励 +2 鱼币

本帖最后由 小甲鱼的二师兄 于 2015-1-13 03:36 编辑

MARK一下,提交在后边。

评分

参与人数 1鱼币 +5 收起 理由
wei_Y + 5 都用字典写没人换个方法。。

查看全部评分

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

使用道具 举报

发表于 2015-1-12 21:26:00 | 显示全部楼层

回帖奖励 +2 鱼币

出C语言的我就来.  放弃python了~~~~~~~~

评分

参与人数 1鱼币 +5 收起 理由
wei_Y + 5 作为一个只会python的表示不会C。。

查看全部评分

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

使用道具 举报

发表于 2015-1-12 22:19:24 | 显示全部楼层
小龙_h 发表于 2015-1-12 19:07
修改后的有问题么?我测试的木有问题啊

我没看见你之后发的,这是你之前发的,之后发的没有问题。 佩服你会用正则
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-12 22:20:36 | 显示全部楼层
第二弹结束了吗?有没有第三弹?

评分

参与人数 1鱼币 +5 收起 理由
wei_Y + 5 小道消息: 下次会有实物奖品~,是个算法呦.

查看全部评分

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

使用道具 举报

发表于 2015-1-12 22:22:41 | 显示全部楼层
小甲鱼的二师兄 发表于 2015-1-12 20:27
MARK下,写到这里,待会继续:

def twist(s1):

你写完了,这活动也结束了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本来不想用正则,但是发现好像行不通,先发了再想
版本3.4.2

评分

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

查看全部评分

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

使用道具 举报

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

想了半天......

198个字符,3行:

  1. import re
  2. def twist(a):
  3.     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()))
复制代码




评分

参与人数 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行:

学习了,好精简啊!
不过符号转换那一块有问题,要求是相互转换的啊,你的改成这样就好了
  1. def twist(a):
  2.     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 编辑

好的,严格按照要求修改后:

  1. import re
  2. def twist(a):
  3.     return ''.join(re.sub(r'\s+',' ',re.sub(r'(?P<w>[a-zA-Z]+)',\
  4.             lambda b:b.group('w')[::-1],a).translate(''.maketrans\
  5.             (',!({[<@;0123456789.?)}]>#:','.?)}]>#:9876543210,!({[<@;')).swapcase()))
复制代码




想知道小甲鱼最近在做啥?请访问 -> 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()方法,再次简化
  1. import re
  2. w=',!({[<@;9876543210:#>]})?.';m=w[::-1];r=re.compile;p=r(r'([\W\d]+)');
  3. def twist(s):return ''.join(list(map(lambda x:x[::-1] if x.isalpha() else \
  4.     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
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-27 15:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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