
Lv.1
烧黑了的萌新
签名:正在吸猫
在 【Python作品分享】进制转换v2.4 中回复
我有个更好的,10行(看起来不像,实际上真的10行),任意2-62进制转换任意2-62进制
DIC='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
def anytoany(a: str,abase: int,bbase: int) -> str:
def tentoany(a,base,text=''):
if base<2 or a<0:
return '输入有误'
else:
return (text+DIC[a%base])[::-1] if a//base==0 else tentoany(a//base,base,text+DIC[a%base])
def anytoten(text,base):
return '输入有误' if set(text)-set(DIC[:base])!=set() else sum(map(lambda a:a[0]*a[1],zip([DIC.index(i) for i in text],[base**i for i in range(len(text)-1,-1,-1)])))
return tentoany(anytoten(a,abase),bbase)2020-04-25T14:21:01 点赞:0
在 【Python作品分享】进制转换v2.4 中回复
新的(改良了非法判断)
DIC='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
def anytoany(a: str,abase: int,bbase: int) -> str:
return tentoany(anytoten(a,abase),bbase)
def tentoany(a,base,text=''):
if not 1<base<63 or a<0:
return '输入有误'
else:
return (text+DIC[a%base])[::-1] if a//base==0 else tentoany(a//base,base,text+DIC[a%base])
def anytoten(text,base):
return '输入有误' if set(text)-set(DIC[:base])!=set() or not 1<base<63 else sum(map(lambda a:a[0]*a[1],zip([DIC.index(i) for i in text],[base**i for i in range(len(text)-1,-1,-1)])))2020-04-26T10:26:30 点赞:0