日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

使用python編寫十二進制與十進制轉換程序

系統 1821 0

我在面試前,面試公司發來一道python題,我覺得還挺有意思的。題目如下。"""
“”"
我們知道 2 進制數字由 2 種字符(01)組成,10 進制數字由 10 種字符(0123456789)組成,16 進制由 16 種字符(0123456789ABCDEF)。不同進制的數字之間可以相互轉換。

我們定義一種 “十二地支進制” 數字,這種數字由中國古代地支的 12 種字符(子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥)組成。“十二地支進制” 數字和 10 進制數字的關系可以看下面的代碼。

            
              
                [
              
              
                [
              
              
                "子"
              
              
                ,
              
              
                0
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "丑"
              
              
                ,
              
              
                1
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "寅"
              
              
                ,
              
              
                2
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "卯"
              
              
                ,
              
              
                3
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "辰"
              
              
                ,
              
              
                4
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "巳"
              
              
                ,
              
              
                5
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "午"
              
              
                ,
              
              
                6
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "未"
              
              
                ,
              
              
                7
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "申"
              
              
                ,
              
              
                8
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "酉"
              
              
                ,
              
              
                9
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "戌"
              
              
                ,
              
              
                10
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "亥"
              
              
                ,
              
              
                11
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "丑子"
              
              
                ,
              
              
                12
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "丑丑"
              
              
                ,
              
              
                13
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "丑寅"
              
              
                ,
              
              
                14
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "丑卯"
              
              
                ,
              
              
                15
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "丑寅子卯"
              
              
                ,
              
              
                2019
              
              
                ]
              
              
                ,
              
              
                ]
              
            
          

請實現 10 進制數字和 “十二地支進制” 數字之間的轉換函數。不需要考慮負數。
“”"
這道題的本質就是十進制轉十二進制。跟十進制轉十六進制或者八進制原理一樣。十進制轉二進制是“除二倒取余數法”如下圖:
使用python編寫十二進制與十進制轉換程序_第1張圖片

與之類似,十二進制是除以十六。

十六進制轉十進制的轉換方式是“加權求和法”,如下圖:
使用python編寫十二進制與十進制轉換程序_第2張圖片
圖中的十六進制數應為:713。轉換后的十進制為125。

十二進制轉換十進制的方法類似。十二進制是12的N次方。
在已知上述的轉換方式后,該問題就解決了一大半。只需要轉換為對應的“地支”數。

python代碼如下:

            
               a 
              
                =
              
              
                2019
              
              #給定十進制數如
    b 
              
                =
              
              
                [
              
              
                ]
              
              
    init_10 
              
                =
              
              
                [
              
              
                0
              
              
                ,
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                3
              
              
                ,
              
              
                4
              
              
                ,
              
              
                5
              
              
                ,
              
              
                6
              
              
                ,
              
              
                7
              
              
                ,
              
              
                8
              
              
                ,
              
              
                9
              
              
                ,
              
              
                10
              
              
                ,
              
              
                11
              
              
                ]
              
              
    dizhi1 
              
                =
              
              
                [
              
              
                "子"
              
              
                ,
              
              
                "丑"
              
              
                ,
              
              
                "寅"
              
              
                ,
              
              
                "卯"
              
              
                ,
              
              
                "辰"
              
              
                ,
              
              
                "巳"
              
              
                ,
              
              
                "午"
              
              
                ,
              
              
                "未"
              
              
                ,
              
              
                "申"
              
              
                ,
              
              
                "酉"
              
              
                ,
              
              
                "戌"
              
              
                ,
              
              
                "亥"
              
              
                ]
              
              
    int_to_dizhi 
              
                =
              
              
                dict
              
              
                (
              
              
                zip
              
              
                (
              
              init_10
              
                ,
              
               dizhi1
              
                )
              
              
                )
              
              #地支對應的十進制字典
#十進制轉換為地支

    
              
                if
              
               a 
              
                >=
              
              
                12
              
              
                :
              
              #判斷是否大于
              
                12
              
              ?小于
              
                12
              
              直接轉換為對應地支。

        
              
                if
              
               a 
              
                // 12 >= 12:
              
              
#整除
              
                12
              
              是否大于
              
                12
              
              ?小于
              
                12
              
              只做一次除
              
                12
              
              ,大于
              
                12
              
              會多次除以
              
                12
              
              。
            
              
                while
              
              
                (
              
              a 
              
                >=
              
              
                12
              
              
                )
              
              
                :
              
              
                c 
              
                =
              
               a 
              
                %
              
              
                12
              
                # 獲得余數
                a 
              
                =
              
               a 
              
                // 12  # 循環除
              
              
                b
              
                .
              
              
                append
              
              
                (
              
              c
              
                )
              
              

            b
              
                .
              
              
                append
              
              
                (
              
              a
              
                )
              
              
                else
              
              
                :
              
              
            b
              
                .
              
              
                append
              
              
                (
              
              a 
              
                %
              
              
                12
              
              
                )
              
              #只做一次除
              
                12
              
              取余數
            b
              
                .
              
              
                append
              
              
                (
              
              a 
              
                // 12)
              
              
                else
              
              
                :
              
              
        b
              
                .
              
              
                append
              
              
                (
              
              a
              
                )
              
              

    ccc
              
                =
              
              
                [
              
              
                ]
              
              #輸出
    b
              
                .
              
              
                reverse
              
              
                (
              
              
                )
              
              #列表左右翻轉

    
              
                for
              
               i 
              
                in
              
               b
              
                :
              
              
        ccc
              
                .
              
              
                append
              
              
                (
              
              int_to_dizhi
              
                [
              
              i
              
                ]
              
              
                )
              
              #將十進制轉換為對應的“地支”
    
              
                return
              
               ccc

            
          

地支進制轉十進制:

            
              init_10 
              
                =
              
              
                [
              
              
                0
              
              
                ,
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                3
              
              
                ,
              
              
                4
              
              
                ,
              
              
                5
              
              
                ,
              
              
                6
              
              
                ,
              
              
                7
              
              
                ,
              
              
                8
              
              
                ,
              
              
                9
              
              
                ,
              
              
                10
              
              
                ,
              
              
                11
              
              
                ]
              
              
    dizhi1 
              
                =
              
              
                [
              
              
                "子"
              
              
                ,
              
              
                "丑"
              
              
                ,
              
              
                "寅"
              
              
                ,
              
              
                "卯"
              
              
                ,
              
              
                "辰"
              
              
                ,
              
              
                "巳"
              
              
                ,
              
              
                "午"
              
              
                ,
              
              
                "未"
              
              
                ,
              
              
                "申"
              
              
                ,
              
              
                "酉"
              
              
                ,
              
              
                "戌"
              
              
                ,
              
              
                "亥"
              
              
                ]
              
              
    int_to_dizhi 
              
                =
              
              
                dict
              
              
                (
              
              
                zip
              
              
                (
              
              dizhi1
              
                ,
              
               init_10
              
                )
              
              
                )
              
              

    d 
              
                =
              
              
                ""
              
              #給定的地支如dizhi
              
                :
              
               str
    d
              
                .
              
              
                split
              
              
                (
              
              
                )
              
              #字符串分割
    z 
              
                =
              
              
                [
              
              
                ]
              
              
    l 
              
                =
              
              
                len
              
              
                (
              
              d
              
                )
              
              
    #地支轉換成十進制
    
              
                for
              
               i 
              
                in
              
              
                list
              
              
                (
              
              d
              
                )
              
              
                :
              
              
        z
              
                .
              
              
                append
              
              
                (
              
              int_to_dizhi
              
                [
              
              i
              
                ]
              
              
                )
              
              

    ten 
              
                =
              
              
                0
              
              
                for
              
               i
              
                ,
              
               j 
              
                in
              
              
                enumerate
              
              
                (
              
              z
              
                ,
              
               start
              
                =
              
              
                0
              
              
                )
              
              
                :
              
              
        ten 
              
                =
              
               ten 
              
                +
              
               j 
              
                *
              
              
                12
              
              
                **
              
              
                (
              
              l 
              
                -
              
               i 
              
                -
              
              
                1
              
              
                )
              
              
                print
              
              
                (
              
              i
              
                ,
              
               j
              
                )
              
              
                print
              
              
                (
              
              ten
              
                )
              
              
                return
              
               ten

            
          

或許不是最簡單的,不過思路應該是清晰的。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 康乐县| 新余市| 千阳县| 崇仁县| 达日县| 满城县| 河津市| 嘉义县| 金山区| 都江堰市| 墨竹工卡县| 梧州市| 汤原县| 揭东县| 襄汾县| 呼玛县| 龙州县| 织金县| 贺兰县| 浪卡子县| 长春市| 繁昌县| 海阳市| 治县。| 崇左市| 巧家县| 柞水县| 渭源县| 米林县| 长寿区| 安仁县| 公安县| 庆元县| 嘉定区| 刚察县| 屏山县| 龙井市| 宁陕县| 中方县| 香港| 射洪县|