• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Python中基于字典的大寫金額轉換算法的實現(xiàn)

      2022-04-08 08:29:14婁七明許海成孫建洪
      紅河學院學報 2022年2期
      關鍵詞:阿拉伯數(shù)字大寫字典

      婁七明,許海成,孫建洪

      (紅河學院工學院,云南蒙自 661199)

      Python是一種跨平臺的面向對象的腳本語言,廣泛用于Web開發(fā)、云計算、人工智能、金融分析、科學計算等領域。隨著信息化建設的不斷推進,辦公自動化程度的不斷提高,日常工作中很多票據(jù)和經(jīng)濟合同等都需要打印。這些票據(jù)和經(jīng)濟合同中通常涉及到大寫金額,這就需要將用阿拉伯數(shù)字表示的金額轉換成人民幣大寫形式。相關文獻[1][2]實現(xiàn)了基于C#、T-SQL等語言的大寫金額轉換算法,這些算法中把阿拉伯數(shù)字轉換成對應的大寫漢字都是使用多分支結構實現(xiàn)的。為此,本文提出了一種基于字典的大寫金額轉換方法,并用Python實現(xiàn)了該算法。該算法簡單易懂,具有很好的可擴充性和較強的通用性。

      1 算法設計

      1.1 大寫金額的書寫規(guī)則[1][3]

      要把阿拉伯數(shù)字轉換成用漢字表示的大寫金額,可以把整數(shù)部分和小數(shù)部分分開進行轉換,然后把轉換結果合并成一個字符串。整數(shù)部分的轉換規(guī)則如下:

      (1)非零數(shù)字轉換成對應的漢字并加上相應數(shù)位對應的單位,比如4310轉換為“肆仟叁佰壹拾圓”;

      (2)億位不為零時,億位要加上“億”;萬位不為零時,萬位要加上“萬”;

      (3)非0的阿拉伯數(shù)字之間出現(xiàn)一個或者多個0時,大寫金額中間對應處要加一個“零”;如果非0的阿拉伯數(shù)字之后所有數(shù)字都為0,則大寫金額中這個數(shù)字后面不加“零”,比如10100,轉換為“壹萬零壹佰圓”。

      小數(shù)部分的轉換規(guī)則如下:

      (1)小數(shù)部分為0,轉換為“整”或“正”;

      (2)角位為0,分位不為0,轉換為“零*分”,*代表分位數(shù)字對應的漢字;

      (3)角位為不為0,分位為0,轉換為“*角”,*代表角位數(shù)字對應的漢字;

      (4)角位和分位都不為0,轉換為“*角*分”,*代表相應數(shù)字對應的漢字。

      1.2 算法設計

      為了簡化算法,分別取出要轉換的阿拉伯數(shù)字的整數(shù)部分和小數(shù)部分。然后把整數(shù)部分和小數(shù)部分按照前面給出的轉換規(guī)則分別轉換成對應的字符串,然后把整數(shù)部分對應的字符串與小數(shù)部分對應的字符串進行合并即可。比如待轉換的數(shù)字是450210.35,取出整數(shù)部分為450210,根據(jù)整數(shù)部分的轉換規(guī)則得“肆拾伍萬零貳佰壹拾圓”,小數(shù)部分為35,根據(jù)小數(shù)部分的轉換規(guī)則得“叁角伍分”,合并后的轉換結果為“肆拾伍萬零貳佰壹拾圓叁角伍分”。

      金額轉換算法對應的N-S流程圖如圖1所示,其中圖a為算法的總體流程圖,圖b為小數(shù)部分轉換

      圖1 金額轉換算法流程圖

      2 算法實現(xiàn)

      2.1 關鍵技術

      字典[4]是Python中的一種數(shù)據(jù)類型,是一種可變?nèi)萜髂P?,且可存儲任意類型對象。字典類型可以理解為一種映射關系,映射是一種鍵和值的對應關系,比如1:“壹”,鍵“1”對應的值是“壹”。字典就是鍵值對的集合,通過鍵獲得對應的值。Python中字典的聲明,以及通過鍵獲得值的方式如下。

      例如,下面定義了一個字典,字典dictArab2Chinese定義了阿拉伯數(shù)字和大寫漢字的映射關系。

      有了這個字典要把3 2 1 轉換成對應的漢字形式,只需要分別取鍵3、2、1 對應的值“叁”“貳”“壹”,然后連接成一個字符串即可,結果為“叁貳壹”。下面的算法中就巧妙地使用了字典將阿拉伯數(shù)字轉換成對應的漢字并在后面加上數(shù)字所在位對應的單位來實現(xiàn)大寫金額的轉換。

      2.2 算法的實現(xiàn)

      函數(shù)名稱:Arab2Chinese。

      參數(shù):totalPrice數(shù)值類型,待轉換的金額。

      返回值:result字符串類型,符合漢語書寫規(guī)范的大寫金額。

      函數(shù)的定義如下:

      上述代碼把待轉換的數(shù)字450210.35轉換為對應的大寫金額并輸出,輸出結果為“肆拾伍萬零貳佰壹拾圓叁角伍分”。

      3 結語

      本文采用Python實現(xiàn)的基于字典的大寫金額轉換算法簡單易懂。文中定義的轉換函數(shù)Arab2Chinese能實現(xiàn)千億以內(nèi)的阿拉伯數(shù)字到大寫金額的轉換,能滿足大多數(shù)情況下金額轉換的需求。如果待轉換的阿拉伯數(shù)字超出仟億位,只需要修改函數(shù)體中第二行定義的數(shù)位字典dictUnit2Chinese,在字典中增加更高數(shù)位的鍵值對即可,比如修改為dictUnit2Chinese={0:u'',1:u'拾',2:u'佰',3:u'仟',4:u'',5:u'拾',6:u'佰',7:u'仟',8:u'',9:u'拾',10:u'佰',11:u'仟',12:u’萬’},該算法就能實現(xiàn)萬億以內(nèi)的金額轉換,該算法具有很好的可擴充性和通用性。

      猜你喜歡
      阿拉伯數(shù)字大寫字典
      開心字典
      家教世界(2023年28期)2023-11-14 10:13:50
      開心字典
      家教世界(2023年25期)2023-10-09 02:11:56
      做一個大寫的“我”
      少先隊活動(2022年4期)2022-06-06 07:20:20
      大寫的厲害:“00后”少年自制火箭成功上天
      小讀者(2021年4期)2021-06-11 05:42:04
      阿拉伯數(shù)字的用法
      “大寫”與“大些”
      找影子
      我是小字典
      正版字典
      讀者(2016年14期)2016-06-29 17:25:50
      阿拉伯數(shù)字是阿拉伯人發(fā)明的嗎
      延津县| 罗定市| 永顺县| 乌什县| 高碑店市| 神池县| 达日县| 哈尔滨市| 济南市| 中卫市| 安远县| 鄱阳县| 涡阳县| 临朐县| 林西县| 高淳县| 尤溪县| 鹰潭市| 南宁市| 恩平市| 教育| 浠水县| 宁南县| 都兰县| 自治县| 云霄县| 东山县| 隆子县| 修水县| 杭州市| 游戏| 宜君县| 耒阳市| 疏勒县| 固镇县| 巴林右旗| 华容县| 栖霞市| 三亚市| 临湘市| 抚远县|