Python3实现十进制转为其它进制
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))
3. 参考资料
后记:
我从本硕药学零基础转行计算机,自学路上,走过很多弯路,也庆幸自己喜欢记笔记,把知识点进行总结,帮助自己成功实现转行。
2020下半年进入职场,深感自己的不足,所以2021年给自己定了个计划,每日学一技,日积月累,厚积薄发。
如果你想和我一起交流学习,欢迎大家关注我的微信公众号每日学一技
,扫描下方二维码或者搜索每日学一技
关注。
这个公众号主要是分享和记录自己每日的技术学习,不定期整理子类分享,主要涉及 C – > Python – > Java,计算机基础知识,机器学习,职场技能等,简单说就是一句话,成长的见证!