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

作者: yauhh (小y寶貝)   2014-12-13 08:38:10
※ 引述《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的重點在於函數本身要寫得短,而且函數主題明確。
的確一個函數可以寫成一行,但是,一個目標不見得要是一行完成。
其實寫一行或寫三行,所用到的函數一樣多,擠成一行照樣該跑多久就跑多久。
擠成一行甚至卻換來難以閱讀的問題。
作者: xatier (一切重來就好了...)   2014-12-13 08:56:00
你的話部份同意,不過確實大多數的情況下也是傾向寫小而美的函數來拼出完整的大程式,不過這邊我比較傾向把題目當作對 lambda 的操作練習 :P
作者: yauhh (小y寶貝)   2014-12-13 09:11:00
不是「小而美」,而是每一個函數我可以說出它是用來幹什麼例如part_zs/1是分割出尾端純進位部分與前端加一部分而incaz/1則是收到一個26進位數的內部表達法,則製造出下一個26進位數。

Links booklink

Contact Us: admin [ a t ] ucptt.com