成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【python3】將小于億的正整數(shù)轉(zhuǎn)為漢字字符

Jochen / 2086人閱讀

摘要:項目需要,將一些整數(shù)轉(zhuǎn)為漢字字符串,搜索了一下大家基本都是自己寫一下函數(shù)轉(zhuǎn)換,參考了帖子在其中速度最快的第三種程序的基礎(chǔ)上,自己做了一些改進(jìn),讓代碼更精簡并且更快一些。基本思想還是先將整數(shù)字符串化后轉(zhuǎn)為列表,然后進(jìn)行漢字字符的替換。

項目需要,將一些整數(shù)轉(zhuǎn)為漢字字符串,搜索了一下大家基本都是自己寫一下函數(shù)轉(zhuǎn)換,參考了帖子:https://blog.csdn.net/PlusCha...;在其中速度最快的第三種程序的基礎(chǔ)上,自己做了一些改進(jìn),讓代碼更精簡并且更快一些。

基本思想還是先將整數(shù)字符串化后轉(zhuǎn)為列表,然后進(jìn)行漢字字符的替換。再根據(jù)漢語語法結(jié)構(gòu)加上單位,以及把多余的零和一(例如“一十二”中的“一”)去掉。代碼如下:

# 億位以下的自然數(shù)
def num2Chinese(d):
    if 100000000 > d > 0:
        num = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"]
        kin = ["十", "百", "千", "萬"]
        num_str = list(str(d))
        num_str.reverse()
        Chinese_str = ""
        for index, i in enumerate(num_str):
            if index!=0:
                if i != "0":
                    Chinese_str = num[int(i)] + kin[(index%4)-1] + Chinese_str
                elif Chinese_str:
                    if index==4 :
                        if Chinese_str[0]!="零":
                            Chinese_str = kin[3] + "零" + Chinese_str
                        else:
                            Chinese_str = kin[3] + Chinese_str
                    if not(Chinese_str[0] in ["零", "萬"] and i=="0"):
                        Chinese_str = num[int(i)] + Chinese_str

            else:
                if i != "0":
                    Chinese_str = num[int(i)] + Chinese_str
        if Chinese_str[:2] == "一十":
            Chinese_str = Chinese_str[1:]
        return Chinese_str

github地址:https://github.com/Pengyiqing...

轉(zhuǎn)換的過程思路如下:將數(shù)字列表化后倒置,即先從個位開始分析,個位上只需要考慮該位是否為零,為零則漢字字符無需聲明。從十位開始,既要考慮加相應(yīng)單位(好在億以下的算是兩次【十、百、千】的循環(huán),可以合并判斷,如果該位是【零】,根據(jù)已經(jīng)生成的字符串的第一個是否是【零】要判斷是否要加上。循環(huán)之間用【萬】相連,【萬】的情況就更復(fù)雜一些,因為【萬】字前面不加零,所以再加多帶帶判斷即可。

在本人電腦上進(jìn)行測試,參考例子里最快的那個代碼,轉(zhuǎn)化1至9999999的運(yùn)行時間為73秒。而上面那個優(yōu)化后的代碼,運(yùn)行時間為48秒。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42761.html

相關(guān)文章

  • 常用正則匹配

    摘要:由數(shù)字個英文字母或者下劃線組成的字符串非負(fù)整數(shù)正整數(shù)正整數(shù)非正整數(shù)負(fù)整數(shù)負(fù)整數(shù)整數(shù)非負(fù)浮點(diǎn)數(shù)正浮點(diǎn)數(shù)正浮點(diǎn)數(shù)非正浮點(diǎn)數(shù)負(fù)浮點(diǎn)數(shù)負(fù)浮點(diǎn)數(shù)浮點(diǎn)數(shù)由個英文字母組成的字符串 1.由數(shù)字、26個英文字母或者下劃線組成的字符串: ^[0-9a-zA-Z_]{1,}$ 2.非負(fù)整數(shù)(正整數(shù) + 0 ): ^d+$ 3.正整數(shù): ^[0-9]*[1-9][0-9]*$ /^[1-9]d*$/ 4.非正...

    wdzgege 評論0 收藏0
  • Python入門-基本語法1

    摘要:根據(jù)有效范圍作用域分為全局變量和局部變量。類型以開頭標(biāo)識類型以開頭標(biāo)識類型以進(jìn)制的字節(jié)碼表示,實(shí)際上是一個字節(jié)串,回應(yīng)了它的另一個名字。 < 返回索引頁 基本語法 Hello World 代碼注釋 關(guān)鍵字 數(shù)據(jù)類型 變量、常量 變量 變量賦值 變量命名 變量的作用域 常量 字符串與編碼 字符轉(zhuǎn)義 字符編碼 字符串操作 運(yùn)算符與表達(dá)式 運(yùn)算符 表達(dá)式 ...

    ingood 評論0 收藏0
  • 基于PHP/CURL/codeIgniter的Spider Webbot爬蟲[7]常用正則表達(dá)式

    摘要:驗證是否含有等字符只能輸入漢字驗證地址驗證驗證電話號碼正確格式為,,,,,。驗證身份證號位或位數(shù)字驗證一年的個月正確格式為和驗證一個月的天正確格式為和。 一、校驗數(shù)字的表達(dá)式 1 數(shù)字:^[0-9]*$ 2 n位的數(shù)字:^d{n}$ 3 至少n位的數(shù)字:^d{n,}$ 4 m-n位的數(shù)字:^d{m,n}$ 5 零和非零開頭的數(shù)字:^(0|1-9*)$ 6 非零開頭的最多帶兩位小數(shù)的數(shù)字...

    wow_worktile 評論0 收藏0
  • 常用正則表達(dá)式整理(大全)

    摘要:驗證是否含有等字符驗證漢字驗證地址驗證驗證電話號碼正確格式為,,,,,。驗證身份證號位或位數(shù)字驗證一年的個月正確格式為和驗證一個月的天正確格式為和。 http://blog.csdn.net/hebbely/...;http://www.cnblogs.com/hustsk... 驗證數(shù)字:^[0-9]*$ 驗證n位的數(shù)字:^d{n}$ 驗證至少n位數(shù)字:^d{n,}$ 驗證m-...

    Allen 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<