Re: [問題] 如何能做到字母進位呢?
alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
base = len(alphabet)
# from int to str, number must >= 1
def base26encode(number):
result = []
while number-1 >= base:
number, i = divmod(number-1, base)
result.append(alphabet[i])
result.append(alphabet[number-1])
return ''.join(reversed(result))
# from str to int, 'A', 'B', ...'Z', 'AA', ...'AZ', ...
def base26decode(s):
s = s.upper()
number = 0
for n in s:
number *= base
number += alphabet.index(n) + 1
return number
####
base26decode
'a' -> 1
'b' -> 2
'aa' -> 27
'ab' -> 28
'z' -> 26
'az' -> 52
'ba' -> 53
'bz' -> 78
'zz' -> 702
'bzz' -> 2054
base26encode
2 -> 'B'
3 -> 'C'
27 -> 'AA'
28 -> 'AB'
53 -> 'BA'
79 -> 'CA'
703 -> 'AAA'
2055 -> 'CAA'
--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.225.124.246
※ 文章網址: http://www.ptt.cc/bbs/Python/M.1418348076.A.5FA.html
討論串 (同標題文章)
完整討論串 (本文為第 9 之 14 篇):