亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

使用python編寫(xiě)十二進(jìn)制與十進(jìn)制轉(zhuǎn)換程序

系統(tǒng) 1811 0

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

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

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

請(qǐng)實(shí)現(xiàn) 10 進(jìn)制數(shù)字和 “十二地支進(jìn)制” 數(shù)字之間的轉(zhuǎn)換函數(shù)。不需要考慮負(fù)數(shù)。
“”"
這道題的本質(zhì)就是十進(jìn)制轉(zhuǎn)十二進(jìn)制。跟十進(jìn)制轉(zhuǎn)十六進(jìn)制或者八進(jìn)制原理一樣。十進(jìn)制轉(zhuǎn)二進(jìn)制是“除二倒取余數(shù)法”如下圖:
使用python編寫(xiě)十二進(jìn)制與十進(jìn)制轉(zhuǎn)換程序_第1張圖片

與之類(lèi)似,十二進(jìn)制是除以十六。

十六進(jìn)制轉(zhuǎn)十進(jìn)制的轉(zhuǎn)換方式是“加權(quán)求和法”,如下圖:
使用python編寫(xiě)十二進(jìn)制與十進(jìn)制轉(zhuǎn)換程序_第2張圖片
圖中的十六進(jìn)制數(shù)應(yīng)為:713。轉(zhuǎn)換后的十進(jìn)制為125。

十二進(jìn)制轉(zhuǎn)換十進(jìn)制的方法類(lèi)似。十二進(jìn)制是12的N次方。
在已知上述的轉(zhuǎn)換方式后,該問(wèn)題就解決了一大半。只需要轉(zhuǎn)換為對(duì)應(yīng)的“地支”數(shù)。

python代碼如下:

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

    
              
                if
              
               a 
              
                >=
              
              
                12
              
              
                :
              
              #判斷是否大于
              
                12
              
              ?小于
              
                12
              
              直接轉(zhuǎn)換為對(duì)應(yīng)地支。

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

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

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

    
              
                for
              
               i 
              
                in
              
               b
              
                :
              
              
        ccc
              
                .
              
              
                append
              
              
                (
              
              int_to_dizhi
              
                [
              
              i
              
                ]
              
              
                )
              
              #將十進(jìn)制轉(zhuǎn)換為對(duì)應(yīng)的“地支”
    
              
                return
              
               ccc

            
          

地支進(jìn)制轉(zhuǎn)十進(jìn)制:

            
              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
              
                )
              
              
    #地支轉(zhuǎn)換成十進(jìn)制
    
              
                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

            
          

或許不是最簡(jiǎn)單的,不過(guò)思路應(yīng)該是清晰的。


更多文章、技術(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)論
主站蜘蛛池模板: 国产在线精品网址你懂的 | 国产在线激情视频 | 国产一级黄色毛片 | 日本不卡视频免费的 | 亚洲第一区第二区 | 国产在线麻豆精品 | 久久99热精品免费观看欧美 | 5x性区m免费毛片视频看看 | 欧美精品久久久久久久影视 | 亚洲国产成人久久精品hezyo | 亚洲精品美女一区二区三区乱码 | 亚洲视频在线观看一区 | 久操视频免费观看 | 国产精品你懂的在线播放 | 亚洲精品视频在线观看视频 | 国产成人精品午夜二三区 | 99re这里只有精品在线观看 | 欧美操片在线观看 | 日本一区二区在线 | 国产线路一 | 91香蕉嫩草 | 九九久久精品这里久久网 | 成人网18免费网站在线 | 免费久福利视频在线观看 | 亚洲欧洲综合网 | 伊人影院在线观看视频 | 国产一久久香蕉国产线看观看 | 色视频网站在线观看 | 日本不卡一区二区三区视频 | 久久天天躁夜夜躁狠狠85麻豆 | 国产系列在线观看 | 综合在线视频 | 日本最新在线 | 国产精品国产自线在线观看 | 日韩在线看片中文字幕不卡 | 成人免费视频在 | 99热热久久这里只有精品166 | 亚洲一二三 | 在线视频一二三区 | 日本美女久久 | 国产欧美一区二区三区沐欲 |