摘要:項目需要,將一些整數轉為漢字字符串,搜索了一下大家基本都是自己寫一下函數轉換,參考了帖子在其中速度最快的第三種程序的基礎上,自己做了一些改進,讓代碼更精簡并且更快一些?;舅枷脒€是先將整數字符串化后轉為列表,然后進行漢字字符的替換。
項目需要,將一些整數轉為漢字字符串,搜索了一下大家基本都是自己寫一下函數轉換,參考了帖子:https://blog.csdn.net/PlusCha...;在其中速度最快的第三種程序的基礎上,自己做了一些改進,讓代碼更精簡并且更快一些。
基本思想還是先將整數字符串化后轉為列表,然后進行漢字字符的替換。再根據漢語語法結構加上單位,以及把多余的零和一(例如“一十二”中的“一”)去掉。代碼如下:
# 億位以下的自然數 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...
轉換的過程思路如下:將數字列表化后倒置,即先從個位開始分析,個位上只需要考慮該位是否為零,為零則漢字字符無需聲明。從十位開始,既要考慮加相應單位(好在億以下的算是兩次【十、百、千】的循環,可以合并判斷,如果該位是【零】,根據已經生成的字符串的第一個是否是【零】要判斷是否要加上。循環之間用【萬】相連,【萬】的情況就更復雜一些,因為【萬】字前面不加零,所以再加多帶帶判斷即可。
在本人電腦上進行測試,參考例子里最快的那個代碼,轉化1至9999999的運行時間為73秒。而上面那個優化后的代碼,運行時間為48秒。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42761.html
摘要:根據有效范圍作用域分為全局變量和局部變量。類型以開頭標識類型以開頭標識類型以進制的字節碼表示,實際上是一個字節串,回應了它的另一個名字。 < 返回索引頁 基本語法 Hello World 代碼注釋 關鍵字 數據類型 變量、常量 變量 變量賦值 變量命名 變量的作用域 常量 字符串與編碼 字符轉義 字符編碼 字符串操作 運算符與表達式 運算符 表達式 ...
摘要:驗證是否含有等字符只能輸入漢字驗證地址驗證驗證電話號碼正確格式為,,,,,。驗證身份證號位或位數字驗證一年的個月正確格式為和驗證一個月的天正確格式為和。 一、校驗數字的表達式 1 數字:^[0-9]*$ 2 n位的數字:^d{n}$ 3 至少n位的數字:^d{n,}$ 4 m-n位的數字:^d{m,n}$ 5 零和非零開頭的數字:^(0|1-9*)$ 6 非零開頭的最多帶兩位小數的數字...
摘要:驗證是否含有等字符驗證漢字驗證地址驗證驗證電話號碼正確格式為,,,,,。驗證身份證號位或位數字驗證一年的個月正確格式為和驗證一個月的天正確格式為和。 http://blog.csdn.net/hebbely/...;http://www.cnblogs.com/hustsk... 驗證數字:^[0-9]*$ 驗證n位的數字:^d{n}$ 驗證至少n位數字:^d{n,}$ 驗證m-...
閱讀 1863·2023-04-26 02:46
閱讀 1996·2021-11-25 09:43
閱讀 1140·2021-09-29 09:35
閱讀 2096·2019-08-30 15:56
閱讀 3419·2019-08-30 15:54
閱讀 2627·2019-08-29 16:35
閱讀 3116·2019-08-29 15:25
閱讀 3282·2019-08-29 14:01