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