十进制和二十进制的转换

假设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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值