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

作者: yauhh (小y寶貝)   2014-12-11 19:30:52
※ 引述《opengood5566 ( )》之銘言:
: 比如說進行加一: a變b, at變au, az變ba
: 請問有甚麼辦法可以做到這樣嗎?
: 感謝!
剛好做過,是要把Excel的欄位名稱轉換為數字。
首先做雙向的mapping。
def build_mapping():
a, b = {}, {}
for (x,y) in zip('abcdefghijklmnopqrstuvwxyz',
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,
15,16,17,18,19,20,21,22,23,24,25,26]):
a.udpate({x: y})
b.update({y: x})
return a, b
然後,'at'加一變'au'是這樣做:
at = 'at'
x, y = build_mapping() ##這行我曾經遇過assignment不成功,請告訴我為什麼
n = reduce(lambda (a,b): a * 10 + b, map(lambda z: x[z], at))
n1 = to_list(n+1, 26) ##把n+1轉換成以1為底,26進位的num list
au = string.append(map(lambda n2: y[n2], n1), '')

Links booklink

Contact Us: admin [ a t ] ucptt.com