作者CindyLinz (Cindy Wang)
看板Python
标题Re: [问题] 如何能做到字母进位呢?
时间Sun Dec 14 00:04:41 2014
※ 引述《yauhh (小y宝贝)》之铭言:
: ※ 引述《xatier (陪在你身边 :))》之铭言:
: : 你的好做
: : (lambda s:
: : lambda sFixed=s.rstrip('z'):
: : lambda lz=len(s)-len(sFixed):
: : (sFixed[:-1] + chr(ord(sFixed[-1])+1) if sFixed else 'a') + 'a'*lz)
: : ('a')()()
: def part_zs(s):
: return s.rstrip('z'), (len(s)-len(s.rstrip('z')))
: def incaz((h, zn)):
: return (h[:-1] + chr(ord(h[-1])+1) if h else 'a') + 'a' * zn
: print(incaz(part_zs('au')))
: Functional Programming的重点在於函数本身要写得短,而且函数主题明确。
: 的确一个函数可以写成一行,但是,一个目标不见得要是一行完成。
: 其实写一行或写三行,所用到的函数一样多,挤成一行照样该跑多久就跑多久。
: 挤成一行甚至却换来难以阅读的问题。
乱入一个 perl 的.. :p
(呣.. 因为好像没有看到有人提供正规表达式作法, 等得心有点痒 ._.)
假设 $s 是放 input 字串, 例如 a, at, az, zzz 等等
$s =~ s(([^z])?(z*)$){
($1 ? chr(ord($1)+1) : 'a') .
'a' x length $2
}e;
执行完以後把 $s 取代为 output 字串, 例如 b, au, ba, aaaa
这样应该也可以算是一个 expression 哄?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 112.121.80.249
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Python/M.1418486683.A.CF6.html
1F:推 LiloHuang: 真是优雅的解法 :) 12/14 00:16
2F:→ CindyLinz: 啊想到可以把 ($1 ? chr(ord($1)+1) : 'a') 换成 12/14 00:49
3F:→ CindyLinz: chr(ord($1 // '`')+1) 利用 ` 是 a 的前一个字 :p 12/14 00:50
4F:推 xatier: 解接乱入www 12/14 22:20
5F:→ apua: chr(ord($1 || '`')+1) 似乎也可; Python 只能这样缩 12/21 21:34
6F:→ apua: (翻译) 12/21 21:41
7F:→ apua: __import__('re').sub( 12/21 21:41
8F:→ apua: r'([^z])?(z*)$', 12/21 21:42
9F:→ apua: lambda m: 12/21 21:42
10F:→ apua: chr(ord(m.group(1) or '`')+1) + 12/21 21:42
11F:→ apua: len(m.group(2))*'a', 12/21 21:43
12F:→ apua: s) 12/21 21:43