猫史档案馆


【Python作品分享】进制转换v2.4

用户:盒子的box盒子的box查看:25 回复:11 评论:25 创建时间:2020-03-20T21:07:10


【作品展示】

center_image

 

【作品介绍】

进制转换v2.4与大家见面啦!

这次的成果简化了代码,增加了错误提示,还可以转换20进制以内的数!

大家可以修改l1、l2的值以转换更高的进制!

 

【作品源代码】

# 修改l1、l2的值,可以转换更高的进制哦~
l1 = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
l2 = ['10', '11', '12', '13', '14', '15', '16', '17', '18', '19']
while True:
    try:
        a = 0
        b = 0
        num = list(input('初始值是多少?'))
        for i in num:
            if (i in l1):
                num[num.index(i)] = l2[l1.index(i)]
        jz = int(input('此值为几进制?'))
        tjz = int(input('转换为几进制?'))
        for i in range(len(num)):
            a += (int(num[b]) * (jz ** (len(num) - b - 1)))
            b += 1
        num = [str(a % tjz)]
        a = a // tjz
        while (a != 0):
            num = [str(a % tjz)] + num
            a = a // tjz
        for i in num:
            if (i in l2):
                num[num.index(i)] = l1[l2.index(i)]
        print('结果是', ''.join(num))
    except Exception as e:
        print('程序出错了emmm......')
        print('错误提示:', e)

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
wrmdcxywrmdcxy

可以呀!挺有恒心。加油!emotion_编程猫_加油

点赞0


评论


煤黑烧饼煤黑烧饼

代码是可以简化的,试试bin,oct,hex和指定int函数的第二个参数

点赞0


评论


沉著的飞叶龙uZWJ沉著的飞叶龙uZWJ

高手啊!竟然30行以内写出了通法!

点赞1


评论


1BB0090940B96FFBF1BB0090940B96FFBF

大佬厉害啊emotion_编程猫_厉害了emotion_编程猫_厉害了

点赞1


评论


蒟蒻OIer1048576蒟蒻OIer1048576

l1=[chr(i) for i in range(65,91)]

l2=map(str,list(range(10,36)))

点赞2


评论


無一郎無一郎

emotion_编程猫_点赞emotion_编程猫_点赞emotion_编程猫_点赞emotion_编程猫_点赞

点赞1


评论


煤黑烧饼煤黑烧饼

我有个更好的,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)

点赞0


评论


芜湖咸鱼芜湖咸鱼

word天哪,你不累吗?!

你不知道Python有hex,bin,oct函数吗?? hex=16进制转换,bin=2进制转换,oct(好像是这样)=8进制转换

点赞0


评论


煤黑烧饼煤黑烧饼

新的(改良了非法判断)

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)])))

点赞0


评论


煤黑烧饼煤黑烧饼

喵压缩,4行搞定:

DIC='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
def anytoany(a,abaset,bbase): return tentoany(anytoten(a,abase),bbase)
def tentoany(a,base,text=''): return '输入有误' if not 1<base<63 or a<0 else ((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)])))

点赞0


评论


煤黑烧饼煤黑烧饼

最后的天书版:3行,带混淆:

我不信有人能看懂:

anytoany =lambda OO0OOOOOO0OOO0OO0 ,O00O00O00O0O000O0 ,O0OOO00OO0O0O0OO0 :O0OO0OOOO0O00000OO0O (O0OO0OOOO0OOOO0OOO (OO0OOOOOO0OOO0OO0 ,O00O00O00O0O000O0 ),O0OOO00OO0O0O0OO0 )
O0OO0OOOO0O00000OO0O =lambda O000000O000OOOO00 ,O0000O0OOO000O0O0 ,OO0000O0000O000O0 ='':'输入有误'if not 1 <O0000O0OOO000O0O0 <63 or O000000O000OOOO00 <0 else ((OO0000O0000O000O0 +'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'[O000000O000OOOO00 %O0000O0OOO000O0O0 ])[::-1 ]if O000000O000OOOO00 //O0000O0OOO000O0O0 ==0 else O0OO0OOOO0O00000OO0O (O000000O000OOOO00 //O0000O0OOO000O0O0 ,O0000O0OOO000O0O0 ,OO0000O0000O000O0 +'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'[O000000O000OOOO00 %O0000O0OOO000O0O0 ]))
O0OO0OOOO0OOOO0OOO =lambda O00OO00OOO0OOO000 ,O0000OOO0OOO0O0O0 :'输入有误'if set (O00OO00OOO0OOO000 )-set ('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'[:O0000OOO0OOO0O0O0 ])!=set ()or not 1 <O0000OOO0OOO0O0O0 <63 else sum (map (lambda O0OOO0OO00OO0OOOO :O0OOO0OO00OO0OOOO [0 ]*O0OOO0OO00OO0OOOO [1 ],zip (['0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.index (O00OO00OOO00OOO00 )for O00OO00OOO00OOO00 in O00OO00OOO0OOO000 ],[O0000OOO0OOO0O0O0 **O0OOOO0OO0OO00OO0 for O0OOOO0OO0OO00OO0 in range (len (O00OO00OOO0OOO000 )-1 ,-1 ,-1 )])))

点赞0


评论