Re: [問題] 如何能做到字母進位呢?

看板Python作者 (Cindy Wang)時間9年前 (2014/12/14 00:04), 編輯推噓2(2010)
留言12則, 4人參與, 最新討論串14/14 (看更多)
※ 引述《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://www.ptt.cc/bbs/Python/M.1418486683.A.CF6.html

12/14 00:16, , 1F
真是優雅的解法 :)
12/14 00:16, 1F

12/14 00:49, , 2F
啊想到可以把 ($1 ? chr(ord($1)+1) : 'a') 換成
12/14 00:49, 2F

12/14 00:50, , 3F
chr(ord($1 // '`')+1) 利用 ` 是 a 的前一個字 :p
12/14 00:50, 3F

12/14 22:20, , 4F
解接亂入www
12/14 22:20, 4F

12/21 21:34, , 5F
chr(ord($1 || '`')+1) 似乎也可; Python 只能這樣縮
12/21 21:34, 5F

12/21 21:41, , 6F
(翻譯)
12/21 21:41, 6F

12/21 21:41, , 7F
__import__('re').sub(
12/21 21:41, 7F

12/21 21:42, , 8F
r'([^z])?(z*)$',
12/21 21:42, 8F

12/21 21:42, , 9F
lambda m:
12/21 21:42, 9F

12/21 21:42, , 10F
chr(ord(m.group(1) or '`')+1) +
12/21 21:42, 10F

12/21 21:43, , 11F
len(m.group(2))*'a',
12/21 21:43, 11F

12/21 21:43, , 12F
s)
12/21 21:43, 12F
文章代碼(AID): #1KZ6ERps (Python)
討論串 (同標題文章)
文章代碼(AID): #1KZ6ERps (Python)