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

作者: alibuda174 (阿哩不達)   2014-12-12 09:34:33
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'

Links booklink

Contact Us: admin [ a t ] ucptt.com