假设A代表十进制的 0 ,B代表十进制的1 ,Z 代表26 ,AA代表27,一次类推,那么ZZZZ代表十进制的多少?

这里面有一个20进制的问题,下面用python代码实现 十进制和 二十进制之间的互相转换。

首先把26个英文字母定义一个数组,去除字母“I” ,“O”,因为字母I 和十进制的1 很像,字母O和十进制的0很像。

  1 #!/usr/local/bin/python
  2 import string
  3 import os
  4 import re
  5 import sys
  6
  7 wl = list(string.uppercase) #快速定义26个英文字母的数组
  8 rl = ["I","O"] #定义需要排除的英文字母
  9
 10 for i in rl: #从wl中移除不需要的英文字母
 11     while i in wl:
 12         wl.remove(i)
 13 
def transv( number ): #传入英文字母返回十进制的数字
    num = len(number)
    if num == 1:
        tnum = wl.index(version)
        return str(tnum)
    if num == 2:
       bit = int(wl.index(version[-1]))
       tenplace = (int(wl.index(version[0]))+1)*20
       return str(bit + tenplace)
    if num == 3:
       bit = int(wl.index(version[-1]))
       tenplace = (int(wl.index(version[1]))+1)*20
       thousbit = (int(wl.index(version[0]))+1)*20*20
       return str(bit + tenplace + thousbit)
    if num == 4:
       bit = int(wl.index(version[-1]))
       tenplace = (int(wl.index(version[2]))+1)*20
       thousbit = (int(wl.index(version[1]))+1)*20*20
       tenthous = (int(wl.index(version[0]))+1)*20*20*20
       return str(bit + tenplace + thousbit + tenthous)

def convert( num ): #传入十进制的num,返回英文字母
    num = int(num)
    if num <= 19:
        rsnu = wl[num]
        return rsnu
    if num >19 and num <= 419:
        fir = wl[num % 20]
        sec = wl[(num // 20)-1]
        return sec + fir
    if num > 419 and num <= 8419:
        fir = wl[num % 20]
        sec = wl[(num // 20)%20 - 1]
        if num % 400 <= 19:
            thr = wl[((num // 20)//20)%20 - 2]
        else:
            thr = wl[((num // 20)//20)%20 - 1]
        return thr + sec + fir
    if num > 8419 and num <= 168419:
        fir = wl[num % 20]
        sec = wl[(num // 20)%20 - 1]
        if num % 400 <= 19:
            thr = wl[((num // 20)//20)%20 -2]
        else:
            thr = wl[((num // 20)//20)%20 -1]
        if num % 4000 <= 419:
            fou = wl[(((num // 20)//20)//20)%20 - 2]
        else:
            fou = wl[(((num // 20)//20)//20)%20 - 1]
        return fou + thr + sec + fir

if __name__ == '__main__':
	number = transv("ZZZZ")
	print number
	
	english = convert("168419")
	print english

输出结果:
168419
ZZZZ

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐