|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
小知识:CentOS是企业Linux发行版领头羊RedHatEnterpriseLinux(以下称之为RHEL)的源代码再编译版本。
应用Python将阿拉伯数字转化为中文年夜写,其实最费事的处所就是中央空多个0的成绩,这类情形下,采取拆分轨则,将一个年夜数字,先拆分红整数部门和小数部门,再对整数部门依照仟、万、亿、兆分位拆分为四个字符串构成的List,每一个字符串最多4个字符,然后对每一个分位的字符串用年夜写函数转换成年夜写,最初归并,如许等于缩减了成绩,处置就绝对简略了。
[size=1em]1
[size=1em]2
[size=1em]3
[size=1em]4
[size=1em]5
[size=1em]6
[size=1em]7
[size=1em]8
[size=1em]9
[size=1em]10
[size=1em]11
[size=1em]12
[size=1em]13
[size=1em]14
[size=1em]15
[size=1em]16
[size=1em]17
[size=1em]18
[size=1em]19
[size=1em]20
[size=1em]21
[size=1em]22
[size=1em]23
[size=1em]24
[size=1em]25
[size=1em]26
[size=1em]27
[size=1em]28
[size=1em]29
[size=1em]30
[size=1em]31
[size=1em]32
[size=1em]33
[size=1em]34
[size=1em]35
[size=1em]36
[size=1em]37
[size=1em]38
[size=1em]39
[size=1em]40
[size=1em]41
[size=1em]42
[size=1em]43
[size=1em]44
[size=1em]45
[size=1em]46
[size=1em]47
[size=1em]48
[size=1em]49
[size=1em]50
[size=1em]51
[size=1em]52
[size=1em]53
[size=1em]54
[size=1em]55
[size=1em]56
[size=1em]57
[size=1em]58
[size=1em]59
[size=1em]60
[size=1em]61
[size=1em]62
[size=1em]63
[size=1em]64
[size=1em]65
[size=1em]66
[size=1em]67
[size=1em]68
[size=1em]69
[size=1em]70
[size=1em]71
[size=1em]72
[size=1em]73
[size=1em]74
[size=1em]75
[size=1em]76
[size=1em]77
[size=1em]78
[size=1em]79
[size=1em]80
[size=1em]81
[size=1em]82
[size=1em]83
[size=1em]84
[size=1em]85
[size=1em]86
[size=1em]87
[size=1em]88
[size=1em]89
[size=1em]90
[size=1em]91
[size=1em][size=1em]#!/usr/bin/envpython
[size=1em]#-*-coding:utf-8-*-
[size=1em]
[size=1em]#算法解释:请求字符串输出,现将字符串差费为整数部门和小数部门生成list[整数部门,小数部门]
[size=1em]#将整数部门拆分为:[亿,万,仟]三组字符串构成的List:[0000,0000,0000](依据现实输出生成阶梯List)
[size=1em]#例如:600190000010.70整数部门拆分为:[600,1900,0010]
[size=1em]#然后对list中每一个字符串分组停止年夜写化再归并
[size=1em]#最初处置小数部门的年夜写化
[size=1em]
[size=1em]classcnumber:
[size=1em]cdict={}
[size=1em]gdict={}
[size=1em]xdict={}
[size=1em]def__init__(self):
[size=1em]self.cdict={1:u,2:u拾,3:u佰,4:u仟}
[size=1em]self.xdict={1:u元,2:u万,3:u亿,4:u兆}#数字标识符
[size=1em]self.gdict={0:u零,1:u壹,2:u贰,3:u叁,4:u肆,5:u伍,6:u陆,7:u柒,8:u捌,9:u玖}
[size=1em]defcsplit(self,cdata):#拆分函数,将整数字符串拆分红[亿,万,仟]的list
[size=1em]g=len(cdata)%4
[size=1em]csdata=[]
[size=1em]lx=len(cdata)-1
[size=1em]ifg>0:
[size=1em]csdata.append(cdata[0:g])
[size=1em]k=g
[size=1em]whilek<=lx:
[size=1em]csdata.append(cdata[k:k+4])
[size=1em]k+=4
[size=1em]returncsdata
[size=1em]
[size=1em]defcschange(self,cki):#对[亿,万,仟]的list中每一个字符串分组停止年夜写化再归并
[size=1em]lenki=len(cki)
[size=1em]i=0
[size=1em]lk=lenki
[size=1em]chk=u
[size=1em]foriinrange(lenki):
[size=1em]ifint(cki)==0:
[size=1em]ifi<lenki-1:
[size=1em]ifint(cki[i+1])!=0:
[size=1em]chk=chk+self.gdict[int(cki)]
[size=1em]else:
[size=1em]chk=chk+self.gdict[int(cki)]+self.cdict[lk]
[size=1em]lk-=1
[size=1em]returnchk
[size=1em]
[size=1em]defcwchange(self,data):
[size=1em]cdata=str(data).split(.)
[size=1em]cki=cdata[0]
[size=1em]iflen(cdata)==1:
[size=1em]i=0
[size=1em]chk=u
[size=1em]cski=self.csplit(cki)#分化字符数组[亿,万,仟]三组List:[0000,0000,0000]
[size=1em]ikl=len(cski)#获得拆分后的List长度
[size=1em]#年夜写归并
[size=1em]foriinrange(ikl):
[size=1em]ifself.cschange(cski)==:#有能够一个字符串满是0的情形
[size=1em]chk=chk+self.cschange(cski)#此时不须要将数字标识符引入
[size=1em]else:
[size=1em]chk=chk+self.cschange(cski)+self.xdict[ikl-i]#归并:前字符串年夜写+以后字符串年夜写+标识符
[size=1em]chk=chk+u整
[size=1em]else:
[size=1em]i=0
[size=1em]chk=u
[size=1em]cski=self.csplit(cki)#分化字符数组[亿,万,仟]三组List:[0000,0000,0000]
[size=1em]ikl=len(cski)#获得拆分后的List长度
[size=1em]#年夜写归并
[size=1em]foriinrange(ikl):
[size=1em]ifself.cschange(cski)==:#有能够一个字符串满是0的情形
[size=1em]chk=chk+self.cschange(cski)#此时不须要将数字标识符引入
[size=1em]else:
[size=1em]chk=chk+self.cschange(cski)+self.xdict[ikl-i]#归并:前字符串年夜写+以后字符串年夜写+标识符
[size=1em]#处置小数部门
[size=1em]ckj=cdata[1]
[size=1em]lenkj=len(ckj)
[size=1em]iflenkj==1:#若小数只要1位
[size=1em]ifint(ckj[0])==0:
[size=1em]chk=chk+u整
[size=1em]else:
[size=1em]chk=chk+self.gdict[int(ckj[0])]+u角整
[size=1em]else:#若小数有两位的四种情形
[size=1em]ifint(ckj[0])==0andint(ckj[1])!=0:
[size=1em]chk=chk+u零+self.gdict[int(ckj[1])]+u分
[size=1em]elifint(ckj[0])==0andint(ckj[1])==0:
[size=1em]chk=chk+u整
[size=1em]elifint(ckj[0])!=0andint(ckj[1])!=0:
[size=1em]chk=chk+self.gdict[int(ckj[0])]+u角+self.gdict[int(ckj[1])]+u分
[size=1em]else:
[size=1em]chk=chk+self.gdict[int(ckj[0])]+u角整
[size=1em]returnchk
[size=1em]if__name__==__main__:
[size=1em]pt=cnumber()
[size=1em]printpt.cwchange(123410505632.09).encode(utf-8)
本文参照网上的一些写法做了一些修改,应用起来加倍严谨。
小知识:CentOS在服务器提供商、中小型公司中装机量几乎是最大的Linux发行版。 |
|