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)
证明过程大家自己思考,我也没有完全想明白,下面放张图,帮助大家理解里面的过程。
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))