用户:
KIHIO查看:0 回复:0 评论:0 创建时间:2021-10-09T19:43:31
【作品展示】

【作品介绍】
注:当已转化数字为小数时,它的精确程度是有限的,但它的精确程度应该还可以。
【作品源代码】
def main():
fml=['0','1','2','3',
'4','5','6','7',
'8','9','aA','bB',
'cC','dD','eE','fF',
'gG','hH','iI','jJ',
'kK','lL','mM','nN',
'oO','pP','qQ','rR',
'sS','tT','uU','vV',
'wW','xX','yY','zZ']
try:
j1=float(input('请输入被转化数字的进制数:'))
except ValueError:
print('输入错误。')
return 0
if int(j1)!=j1:
print('输入错误。')
return 0
j1=int(j1)
if j1>36 or j1<2:
print('输入错误。')
return 0
try:
j2=float(input('请输入已转化数字的进制数:'))
except ValueError:
print('输入错误。')
return 0
if int(j2)!=j2:
print('输入错误。')
return 0
j2=int(j2)
if j2>36 or j2<2:
print('输入错误。')
return 0
num=input('请输入被转化数字:')
i1=0
i2=0
ofa=0
num1=[]
num2=[]
if len(num)==0:
print('输入错误。')
return 0
for i1 in range(0,len(num)):
if num[i1]=='.':
if i1==0 or i1==len(num)-1:
print('输入错误。')
return 0
ofa+=1
if ofa>=2:
print('输入错误。')
return 0
else:
ftla=0
for i2 in range(0,36):
if len(fml[i2])==1:
if fml[i2]==num[i1]:
ftla=1
break
else:
if (fml[i2])[0]==num[i1] or (fml[i2])[1]==num[i1]:
ftla=1
break
if ftla==1:
if i2>=j1:
print('输入错误。')
return 0
if ofa==0:
num1.append(i2)
else:
num2.append(i2)
else:
print('输入错误。')
return 0
s1=0
for i1 in range(0,len(num1)):
s1+=num1[i1]*(j1**(len(num1)-1-i1))
for i1 in range(0,len(num2)):
s1+=num2[i1]*(1/(j1**(i1+1)))
s1a=int(s1)
s1b=s1-s1a
pres2a=[]
pres喵=[]
if s1a==0:
pres2a=[0]
while s1a>0:
pres2a.append(s1a%j2)
s1a=s1a//j2
pres2a.reverse()
i1=1
while s1b>0.0000000001:
k=int(s1b/(1/(j2**i1)))
pres喵.append(k)
s1b-=(k*(1/(j2**i1)))
i1+=1
s2a=' '
s喵=' '
for i1 in range(0,len(pres2a)):
if s2a==' ':
s2a=(fml[pres2a[i1]])[0]
else:
s2a=s2a+((fml[pres2a[i1]])[0])
for i1 in range(0,len(pres喵)):
if s喵==' ':
s喵=(fml[pres喵[i1]])[0]
else:
s喵=s喵+((fml[pres喵[i1]])[0])
if s喵==' ':
print('已转化数字:'+s2a)
else:
print('已转化数字:'+s2a+'.'+s喵)
ms=main()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn