最近信息课上有出进制转换的题目,上课就开始比心算
后来我就想能不能直接写一个程序来解决这个问题(虽然计算器上有这样的功能)
自己写的好处就是可以转换一些奇奇怪怪的进制而不局限于二进制八进制十六进制等
话不多说直接上代码
dict01 = {'a':'10','b':'11','c':'12','d':'13','e':'14','f':'15'}
dict02 = {'10':'a','11':'b','12':'c','13':'d','14':'e','15':'f'}
# digi = int(input("输入n进制 例如:2 暂时只支持2到16进制\n"))
# innum = input("输入数字 例如:1101 或者1eft(10对a,11对b以此类推 暂时只支持到16进制\n")
# digo =int(input("输入输出进制(支持2-16) 例如:8 \n"))
def turnto10(dig,num):
numout = 0
if dig!=10:
for i in range(len(num)):
if num[-1-i] in dict01:
numout += int(dict01[num[-1-i]])*(dig**(i))
else:
numout+=int(num[-1-i])*(dig**(i))
elif dig ==10:
numout=int(num)
return numout
def turnfrom10(num,dig):
numout = []
numstr = str(num)
if dig>10:
while num != 0:
if num % dig>9:
numout.append(dict02[str(num%dig)])
else:
numout.append(num%dig)
num//=dig
elif dig==10:
for i in range(len(numstr)):
numout.append(numstr[-1-i])
else:
while num != 0:
numout.append(num%dig)
num//=dig
return numout
res = 'y'
while res=='y':
digi = int(input("输入n进制 例如:2 暂时只支持2到16进制\n你的输入进制:"))
innum = input("输入数字 例如:1101 或者12eff(10对a,11对b以此类推 暂时只支持到16进制\n你的要求数字:")
digo = int(input("输入输出进制(支持2-16) 例如:8 \n你的输出进制:"))
innum = turnto10(digi,innum)
# print(innum)
list_out =turnfrom10(innum,digo)
print("答案:",end='')
for i in range(len(list_out)):
print(list_out[-1-i],end='')
print("\n")
res = input('输入y继续,回车退出')
程序思路就是先把数字处理成十进制再处理成其他进制