我们在写公文的时候,常常会用到汉字序号,如第二章、第一百零八条等。那么如何用程序来自动编号呢?我们首先得掌握把数字转换成汉字序号的方法。
其实仔细研究一下汉字序号的规率,其实百位和个位的算法都很简单。0的话没有,其他几位都是有几就是几,转换非常简单。转换代码如下:
HZ='零一二三四五六七八九'
s=HZ[bw]+"百" if bw else ""
s=HZ[gw] if gw else ""
最复杂的就是十位的转换,主要有以下几个规则:
- 十位不是0时:
- 百位为0且十位是1时,返回"十"
- 否则返回:HZ[sw]+"十"
- 十位是0时:
- 百位不是0且个位不是0时:返回”零“
- 否则返回空
按上面的规则,完整的转换程序如下 :
HZ='零一二三四五六七八九'
def transhz(no):
bw,sw,gw=(int(x)for x in '%03d'%no)
if sw:
r="十" if not bw and sw==1 else HZ[sw]+"十"
else:
r= "零" if bw and gw else ""
return f'{HZ[bw]+"百" if bw else ""}{r}{HZ[gw] if gw else ""}'