题目说明:
1 -- A,2 -- B
...
27 -- AA,28 -- AB
...
53 -- BA,54 -- BB
...
703 -- AAA
...
按照这个规则一直到无穷
或者这么说
在Excel中,列的名称是这样一个递增序列:A、B、C、…、Z、AA、AB、AC、…、AZ、BA、BB、BC、…、BZ、CA、…、ZZ、AAA、AAB…。
我们需要将上述列名序列和以下自然数序列相互转换:1、2、3、…。
解析:
其实这个就是一个26进制与 10进制转换到问题, 与10进制转换到2进制一样,不断的求余
代码:
#-*- coding: utf-8 -*-
def foo(n):
if isinstance(n, int) and n >0:
letter_lists = [chr(x) for x in range(ord('A'), ord('Z') + 1)]
str = ''
while n > 0:
m = n % 26
if m == 0:
m =26
str = letter_lists [m-1] + str
n = (n - m ) / 26
return str
print(foo(53))
# BA