from math import *
def transfrom1(s,k): #将k进制转换为十进制
t=len(s)+1
for i in s:
if i=='.':
t=s.index('.') #判断s中是否有.及找出.的位置,如果没有,则位置超出列表
A=s[t-1::-1]
x=0
for i in range(len(A)):
if ord(A[i])>47 and ord(A[i])<58:
x+=int(A[i])*(k**i)
elif ord(A[i])>96 and ord(A[i])<122:
x+=(ord(A[i])-87)*(k**i)
else:
x+=(ord(A[i])-55)*(k**i) #将s的整数部分转换为十进制
B=s[t+1:]
for i in range(len(B)):
if ord(B[i])>47 and ord(B[i])<58:
x+=int(B[i])/(k**(i+1))
elif ord(B[i])>96 and ord(B[i])<122:
x+=(ord(B[i])-87)/(k**(i+1))
else:
x+=(ord(B[i])-55)/(k**(i+1)) #将s的小数部分转换为十进制
return x
def transform2(q,w):
A='' #将十进制转换为k进制
s=floor(q)
B='0123456789abcdefghijklmnopqrstuvwxyz'
while True:
A=B[s%w]+A
s=s//w
if s//2==0:
A=B[s%w]+A
break #将s的整数部分转换为k进制
print(A)
A+='.'
t=q-s
for i in range(10):
t*=w
print('##')
if (t-int(t))!=0:
if t>=1:
A+=B[int(t)]
t-=int(t)
else:
A+='0'
else:
A+=B[int(t)]
break
print(i)#将s的小数部分转换为k进制
print(A)
print('本程序将m进制数转化为n进制数')
m=int(input('请输入m'))
n=int(input('请输入n'))
s=str(input('请输入m进制数字'))
a=transfrom1(s,m)
print(a)
transform2(a,n)
def transfrom1(s,k): #将k进制转换为十进制
t=len(s)+1
for i in s:
if i=='.':
t=s.index('.') #判断s中是否有.及找出.的位置,如果没有,则位置超出列表
A=s[t-1::-1]
x=0
for i in range(len(A)):
if ord(A[i])>47 and ord(A[i])<58:
x+=int(A[i])*(k**i)
elif ord(A[i])>96 and ord(A[i])<122:
x+=(ord(A[i])-87)*(k**i)
else:
x+=(ord(A[i])-55)*(k**i) #将s的整数部分转换为十进制
B=s[t+1:]
for i in range(len(B)):
if ord(B[i])>47 and ord(B[i])<58:
x+=int(B[i])/(k**(i+1))
elif ord(B[i])>96 and ord(B[i])<122:
x+=(ord(B[i])-87)/(k**(i+1))
else:
x+=(ord(B[i])-55)/(k**(i+1)) #将s的小数部分转换为十进制
return x
def transform2(q,w):
A='' #将十进制转换为k进制
s=floor(q)
B='0123456789abcdefghijklmnopqrstuvwxyz'
while True:
A=B[s%w]+A
s=s//w
if s//2==0:
A=B[s%w]+A
break #将s的整数部分转换为k进制
print(A)
A+='.'
t=q-s
for i in range(10):
t*=w
print('##')
if (t-int(t))!=0:
if t>=1:
A+=B[int(t)]
t-=int(t)
else:
A+='0'
else:
A+=B[int(t)]
break
print(i)#将s的小数部分转换为k进制
print(A)
print('本程序将m进制数转化为n进制数')
m=int(input('请输入m'))
n=int(input('请输入n'))
s=str(input('请输入m进制数字'))
a=transfrom1(s,m)
print(a)
transform2(a,n)







