目录
问题引出:
原理:10进制数转任意进制数都是通过除以目标进制数取余得到的。
具体步骤:
结果展示:
代码实现:
①数值转换预处理
实现原理
②得到目标进制数
创建字典的原理
问题引出:
各种算术问题可能都需要进行进制转后再进行计算,人工计算的原理理解了,那么该如何通过计算机Python语言来实现10进制转任意进制数呢?以此达到实现批量文件中的数字进行进制转换。
原理:10进制数转任意进制数都是通过除以目标进制数取余得到的。
具体步骤:
将十进制整数除以B,得到商和余数,余数对应为B进制数低位的值;
继续让商再除以B,得到商和余数,。。。。。。
重复此操作,直到商为0.
结果展示:
代码实现:
①数值转换预处理
a,x=map(int,input("请输入待转化的十进制数 目标进制,用空格隔开\n").split())
#a为待转换的十进制数,x为需要转化后的 进制数
a1=a
all=[]#存储转化后的数
while a>0:
all.append(str(a%x))
#把取余得到的数添加到列表中
a=int(a/x)
#由于取余只能得到余数,不能在原来的数值上减少,所以需要手动减少
if a==1:
a=0
all.append('1')
实现原理:
10进制数转X任意进制的数,都是通过除以X取余,然后将余数倒序取出得到。所以只需要根据此思想,每次除以X得到的余数后,存入列表当中。计算机与人工短除法的最大区别是,计算机取余后不能在原来的数值上减少,所以需要再写一个a/x来实现,减少。最后如果余数为1的时候,则直接另a为0,同时加入1到列表当中。
②得到目标进制数
#进行处理
change={'10':'A','11':'B','12':'C','13':'D','14':'E','15':'F'}
#创建字典,用于转换数值
for i in range(0,len(all)):
for k,v in change.items():
if all[i]==k:
all[i]=v
#数值处理,将10以上的数转化为ABC的形式
all=all[::-1]
#将得到的数进行倒叙
c="".join(all)
#把列表中的数 按字符串输出
print("%d转化为%d进制为:%s" %(a1,x,c))
创建字典的原理
需要将10-15的数字转化为ABCDEF的字符。所以创建字典来遍历。
最后把列表中的元素通过all[::-1]倒序取出
然后通过"".join(all)函数把列表转化为字符串,输出x转化后的进制数。
字典的键值对可以通过 dict.items()来遍历其中的键值
以上本人的个人经验,如果有错误请各位大佬批评指正!