Python3实现十进制转为其它进制

  • 1. Python3迭代方法实现十进制转为其它进制
  • 2. Python3递归方法实现十进制转为其它进制
  • 3. 参考资料


1. Python3迭代方法实现十进制转为其它进制

利用连续相除法, 保存商和余数,直到商为0为止,再将余数反转。
用列表a=[0,1,2,3,4,5,6,7,8,9,’A’,’b’,’C’,’D’,’E’,’F’]储存转换之后的每一位,直接用余数作为指针即可找到对应的符号。

def convert(n,x):#n为待转换的十进制数,x为进制,取值为2-16
    list_a = [0,1,2,3,4,5,6,7,8,9,'A','b','C','D','E','F'] # 注意这里从0开始
    list_b = []
    while True:
        s,y = divmod(n,x)  # divmod()函数返回一个包含商和余数的元组
        list_b.append(y) # 这里是保存余数
        if s == 0:
            break
        n = s
    list_b.reverse() # 原地翻转,因为求得的是按0,1,2,..的次数求得,所以需要反过来
    for i in list_b:
        print(list_a[i],end='')

n = int(input("请输入需要转换的十进制数(n>=0):")) # 默认输入为str类型,这里需要转换
x = int(input("请输入希望转换的进制数[2-16]:"))
convert(n,x)

证明过程大家自己思考,我也没有完全想明白,下面放张图,帮助大家理解里面的过程。

python 10进制转换成n进制 python 10进制转任意进制_Python3进制转换

2. Python3递归方法实现十进制转为其它进制

在mooc视频上改编而来

def convert(n,x):#n为待转换的十进制数,x为进制,取值为2-16
    if (n>=0) and (n<x):
        return n
    else:
        return convert(n // x,x) * 10 + n % x # 需要细细思考里面的规律

n = int(input("请输入需要转换的十进制数(n>=0):")) # 默认输入为str类型,这里需要转换
x = int(input("请输入希望转换的进制数[2-16]:"))
print(convert(n,x))

python 10进制转换成n进制 python 10进制转任意进制_十进制数_02