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

看板Python作者 (小y寶貝)時間9年前 (2014/12/13 08:38), 9年前編輯推噓0(007)
留言7則, 2人參與, 最新討論串13/14 (看更多)
※ 引述《xatier (陪在妳身邊 :))》之銘言: : : 想不到怎麼壓到一行 XD : 你的好做 : (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的重點在於函數本身要寫得短,而且函數主題明確。 的確一個函數可以寫成一行,但是,一個目標不見得要是一行完成。 其實寫一行或寫三行,所用到的函數一樣多,擠成一行照樣該跑多久就跑多久。 擠成一行甚至卻換來難以閱讀的問題。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.168.162.127 ※ 文章網址: http://www.ptt.cc/bbs/Python/M.1418431092.A.033.html

12/13 08:56, , 1F
你的話部份同意,不過確實大多數的情況下也是傾向寫小而美
12/13 08:56, 1F

12/13 08:56, , 2F
的函數來拼出完整的大程式,不過這邊我比較傾向把題目當作
12/13 08:56, 2F

12/13 08:57, , 3F
對 lambda 的操作練習 :P
12/13 08:57, 3F

12/13 09:11, , 4F
不是「小而美」,而是每一個函數我可以說出它是用來幹什麼
12/13 09:11, 4F

12/13 09:13, , 5F
例如part_zs/1是分割出尾端純進位部分與前端加一部分
12/13 09:13, 5F

12/13 09:16, , 6F
而incaz/1則是收到一個26進位數的內部表達法,則製造出
12/13 09:16, 6F

12/13 09:17, , 7F
下一個26進位數。
12/13 09:17, 7F
但若要說「把題目當lambda練習」,意思有點像「使用class來做」一樣,意義? 我上面那三行,寫成lambda expresssions是 part_zs = lambda s: (s.rstrip('z'), (len(s) - len(s.rstrip('z')))) incaz = lambda (x,y): (x[:-1] + chr(ord(x[-1])+1) if x else 'a') + 'a' * y print(incaz(part_zs('au'))) 與原有的多個函數寫法差別不大。 但重點是,每一個函數都是一個計算步驟,從字面上,我將這一點清楚地表達出來。 ※ 編輯: yauhh (118.168.162.127), 12/13/2014 09:27:08
文章代碼(AID): #1KYufq0p (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 13 之 14 篇):
文章代碼(AID): #1KYufq0p (Python)