问题描述:用26个英文字母来分别表示1-26这26个数,然后27用AA来表示,求2021字母表示。
先上代码:
string='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ans=[0 for _ in range(5)]
index=0
n=2021
while n!=0:
t=n%26
n=int(n /26)
ans[index]=string[t-1]
index+=1
for i in range(index-1,-1,-1):
print(ans[i],end='')
思路解析:这是一个很明显的进制转换的问题。
string保存这26个英文字母,ans利用列表解析来创建一个五个元素的列表(2021是一个四位数)
t表示余数,n表示整数部分
如果理解起来有些难度,那么…
string='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ans=[0 for _ in range(5)]
print(ans)
index=0
n=2021
while n!=0:
t=n%26
print(t)
n=int(n /26)
print(n)
ans[index]=string[t-1]
print(ans[index])
index+=1
print(ans)
for i in range(index-1,-1,-1):
print(ans[i],end='')
加上这些print语句,你就能明白每一步能得到什么,自然也就融会贯通了。
进制转换原理其实都是一样,不断的求余数。