欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python——任意正數(shù)任意進(jìn)制轉(zhuǎn)換(支持2~36進(jìn)制和小數(shù))

系統(tǒng) 1849 0

效果

Python——任意正數(shù)任意進(jìn)制轉(zhuǎn)換(支持2~36進(jìn)制和小數(shù))_第1張圖片

代碼

1.字母和數(shù)字轉(zhuǎn)換

A ? 10 , B ? 11 , . . . , Z ? 35 A?10,B?11,...,Z?35 A ? 1 0 B ? 1 1 . . . Z ? 3 5

            
              
                def
              
              
                trans
              
              
                (
              
              num
              
                )
              
              
                :
              
              
                # 輸入數(shù)字換為字母或輸入字母轉(zhuǎn)換為數(shù)字
              
              
                if
              
              
                type
              
              
                (
              
              num
              
                )
              
              
                ==
              
              
                int
              
              
                :
              
              
                if
              
               num 
              
                <
              
              
                10
              
              
                :
              
              
                return
              
              
                str
              
              
                (
              
              num
              
                )
              
              
                else
              
              
                :
              
              
                return
              
              
                chr
              
              
                (
              
              
                ord
              
              
                (
              
              
                'A'
              
              
                )
              
              
                +
              
               num 
              
                -
              
              
                10
              
              
                )
              
              
                else
              
              
                :
              
              
                if
              
               num
              
                .
              
              isdigit
              
                (
              
              
                )
              
              
                :
              
              
                return
              
              
                int
              
              
                (
              
              num
              
                )
              
              
                else
              
              
                :
              
              
                return
              
              
                ord
              
              
                (
              
              num
              
                )
              
              
                -
              
              
                ord
              
              
                (
              
              
                'A'
              
              
                )
              
              
                +
              
              
                10
              
            
          
2.輸入預(yù)處理

包含輸入合法性檢查,轉(zhuǎn)換字符串,改大寫(xiě),去除前導(dǎo)0

            
              
                def
              
              
                check
              
              
                (
              
              num
              
                ,
              
               base
              
                ,
              
               target
              
                )
              
              
                :
              
              
                # 待轉(zhuǎn)換數(shù)字,當(dāng)前進(jìn)制,目標(biāo)進(jìn)制
              
              
                if
              
              
                type
              
              
                (
              
              base
              
                )
              
              
                is
              
              
                not
              
              
                int
              
              
                or
              
               base 
              
                <
              
              
                2
              
              
                or
              
               base 
              
                >
              
              
                36
              
              
                or
              
              
                type
              
              
                (
              
              target
              
                )
              
              
                is
              
              
                not
              
              
                int
              
              
                or
              
               target 
              
                <
              
              
                2
              
              
                or
              
               target 
              
                >
              
              
                36
              
              
                :
              
              
                print
              
              
                (
              
              
                '非法進(jìn)制數(shù)!'
              
              
                )
              
              
                return
              
              
                False
              
              
                if
              
              
                type
              
              
                (
              
              num
              
                )
              
              
                is
              
              
                int
              
              
                or
              
              
                type
              
              
                (
              
              num
              
                )
              
              
                is
              
              
                float
              
              
                :
              
              
        num 
              
                =
              
              
                str
              
              
                (
              
              num
              
                )
              
              
                .
              
              upper
              
                (
              
              
                )
              
              
                elif
              
              
                type
              
              
                (
              
              num
              
                )
              
              
                is
              
              
                str
              
              
                and
              
              
                len
              
              
                (
              
              num
              
                )
              
              
                !=
              
              
                0
              
              
                :
              
              
        num 
              
                =
              
               num
              
                .
              
              upper
              
                (
              
              
                )
              
              
                else
              
              
                :
              
              
                print
              
              
                (
              
              
                '非數(shù)字輸入!'
              
              
                )
              
              
                return
              
              
                False
              
              
                if
              
               num
              
                .
              
              count
              
                (
              
              
                '.'
              
              
                )
              
              
                >
              
              
                1
              
              
                :
              
              
                print
              
              
                (
              
              
                '多個(gè)小數(shù)點(diǎn)!'
              
              
                )
              
              
                return
              
              
                False
              
              
                if
              
              
                not
              
               num
              
                .
              
              replace
              
                (
              
              
                '.'
              
              
                ,
              
              
                ''
              
              
                )
              
              
                .
              
              isalnum
              
                (
              
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              
                '含有其他字符!'
              
              
                )
              
              
                return
              
              
                False
              
              
                for
              
               c 
              
                in
              
               num
              
                .
              
              replace
              
                (
              
              
                '.'
              
              
                ,
              
              
                ''
              
              
                )
              
              
                :
              
              
                if
              
               trans
              
                (
              
              c
              
                )
              
              
                >=
              
               base
              
                :
              
              
                print
              
              
                (
              
              
                '字符超過(guò)進(jìn)制允許!'
              
              
                )
              
              
                return
              
              
                False
              
              
                while
              
              
                len
              
              
                (
              
              num
              
                )
              
              
                >
              
              
                1
              
              
                :
              
              
                if
              
               num
              
                [
              
              
                0
              
              
                ]
              
              
                ==
              
              
                '0'
              
              
                and
              
               num
              
                [
              
              
                1
              
              
                ]
              
              
                !=
              
              
                '.'
              
              
                :
              
              
            num 
              
                =
              
               num
              
                [
              
              
                1
              
              
                :
              
              
                ]
              
              
                else
              
              
                :
              
              
                break
              
              
                return
              
               num

            
          
3.進(jìn)制轉(zhuǎn)換

以十進(jìn)制為中介,實(shí)現(xiàn)各進(jìn)制之間轉(zhuǎn)換。整數(shù)部分小數(shù)部分分別處理,盡可能地保證精度。

            
              
                def
              
              
                basechange
              
              
                (
              
              num
              
                ,
              
               base
              
                ,
              
               target
              
                ,
              
               precision
              
                =
              
              
                17
              
              
                )
              
              
                :
              
              
                # 待轉(zhuǎn)換數(shù)字,當(dāng)前進(jìn)制,目標(biāo)進(jìn)制,精度
              
              
    num 
              
                =
              
               check
              
                (
              
              num
              
                ,
              
               base
              
                ,
              
               target
              
                )
              
              
                if
              
               num 
              
                is
              
              
                False
              
              
                :
              
              
                return
              
              
                None
              
              
    point 
              
                =
              
               num
              
                .
              
              find
              
                (
              
              
                '.'
              
              
                )
              
              
                if
              
               point 
              
                ==
              
              
                -
              
              
                1
              
              
                :
              
              
        point 
              
                =
              
              
                len
              
              
                (
              
              num
              
                )
              
              
    radix 
              
                =
              
               num
              
                .
              
              replace
              
                (
              
              
                '.'
              
              
                ,
              
              
                ''
              
              
                )
              
              
                if
              
               target 
              
                ==
              
              
                10
              
              
                :
              
              
        int_part 
              
                =
              
               radix
              
                [
              
              
                :
              
              point
              
                ]
              
              
                [
              
              
                :
              
              
                :
              
              
                -
              
              
                1
              
              
                ]
              
              
        frac_part 
              
                =
              
               radix
              
                [
              
              point
              
                :
              
              
                ]
              
              
        s 
              
                =
              
              
                0
              
              
        ss 
              
                =
              
              
                0
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                len
              
              
                (
              
              int_part
              
                )
              
              
                )
              
              
                :
              
              
            s 
              
                +=
              
               trans
              
                (
              
              int_part
              
                [
              
              i
              
                ]
              
              
                )
              
              
                *
              
               base 
              
                **
              
               i
        
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                len
              
              
                (
              
              frac_part
              
                )
              
              
                )
              
              
                :
              
              
            ss 
              
                +=
              
               trans
              
                (
              
              frac_part
              
                [
              
              i
              
                ]
              
              
                )
              
              
                /
              
               base 
              
                **
              
              
                (
              
              i
              
                +
              
              
                1
              
              
                )
              
              
                return
              
              
                str
              
              
                (
              
              s
              
                )
              
              
                +
              
              
                str
              
              
                (
              
              ss
              
                )
              
              
                [
              
              
                1
              
              
                :
              
              
                ]
              
              
                elif
              
               base 
              
                ==
              
              
                10
              
              
                :
              
              
        int_part 
              
                =
              
              
                int
              
              
                (
              
              radix
              
                [
              
              
                :
              
              point
              
                ]
              
              
                )
              
              
        frac_part 
              
                =
              
              
                float
              
              
                (
              
              
                '0.'
              
              
                +
              
              radix
              
                [
              
              point
              
                :
              
              
                ]
              
              
                )
              
              
        s 
              
                =
              
              
                ''
              
              
                while
              
              
                True
              
              
                :
              
              
            s 
              
                +=
              
               trans
              
                (
              
              int_part 
              
                %
              
               target
              
                )
              
              
            int_part 
              
                //=
              
               target
            
              
                if
              
               int_part 
              
                ==
              
              
                0
              
              
                :
              
              
                break
              
              
        s 
              
                =
              
               s
              
                [
              
              
                :
              
              
                :
              
              
                -
              
              
                1
              
              
                ]
              
              
                if
              
               frac_part 
              
                !=
              
              
                0
              
              
                :
              
              
            s 
              
                +=
              
              
                '.'
              
              
            ct 
              
                =
              
              
                0
              
              
                while
              
               frac_part 
              
                !=
              
              
                0
              
              
                and
              
               ct 
              
                <
              
               precision
              
                :
              
              
                frac_part 
              
                *=
              
               target
                s 
              
                +=
              
               trans
              
                (
              
              
                int
              
              
                (
              
              frac_part
              
                )
              
              
                )
              
              
                frac_part 
              
                -=
              
              
                int
              
              
                (
              
              frac_part
              
                )
              
              
                ct 
              
                +=
              
              
                1
              
              
                return
              
               s
    
              
                else
              
              
                :
              
              
                return
              
               basechange
              
                (
              
              basechange
              
                (
              
              num
              
                ,
              
               base
              
                ,
              
              
                10
              
              
                ,
              
               precision
              
                =
              
              precision
              
                )
              
              
                ,
              
              
                10
              
              
                ,
              
               target
              
                ,
              
               precision
              
                =
              
              precision
              
                )
              
            
          
4.存在問(wèn)題

由于浮點(diǎn)數(shù)在計(jì)算機(jī)中不能精確儲(chǔ)存,所以對(duì)小數(shù)進(jìn)行進(jìn)制轉(zhuǎn)換時(shí),會(huì)有十分微小的誤差。如圖所示: Python——任意正數(shù)任意進(jìn)制轉(zhuǎn)換(支持2~36進(jìn)制和小數(shù))_第2張圖片


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲精品中文字幕大岛优香 | 精品热久久 | 久久久久久久影院 | 久久精彩 | 久久久久久久av | 亚洲精品二三区 | 国产av毛片 | 久久精品亚洲成在人线av网址 | 香蕉视频在线看 | 伦一区二区三区中文字幕v亚洲 | 欧美亚洲国产精品第一页 | 另类激情网 | 青草国产视频 | 丁香五月亚洲综合在线 | 69av在线视频 | 久久综合色婷婷 | 久久成人久久爱 | 欧洲精品久久久 | 国产精品久久久精品 | 瑟瑟网站免费网站入口 | 久久无码AV亚洲精品色午夜 | 色婷婷色综合缴情在线 | 亚洲热视频 | 插插插天天 | 国产成人午夜性a一级毛片 久久久久亚洲 | 婷婷精品国产亚洲AV在线观看 | 国产啪| 欧美日韩中文在线 | 杀破狼在线观看 | 可以直接看的毛片 | 久久黄网 | 短视频网站免费观看 | 亚洲成人在线网 | 在线精品国内外视频 | 欧美黑人疯狂性受xxxxx喷水 | 涩涩色中文综合亚洲 | 波多野结衣亚洲一区 | 男女一起www免费高清视频 | 亚洲www啪成人一区二区麻豆 | 91免费无限观看 | 国产高清在线精品一区二区三区 |