阿拉伯数字转口语汉字Python版

#coding:utf-8
import math
import types
import random

# cnList = [ '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' ]
cnList = [ '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' ]

#大权位
chnUnitSection = ["","万","亿","兆","京","垓"]
# chnUnitSection = ["","万","万亿","亿亿","万亿亿","亿亿亿"]

#小权位
chnUnitChar = ["","十","百","千"]


def NumberToChinese2(num):
    #把数字转为字符串,同时防止非法输入
    try:
        typen = type(num)
        if typen == types.IntType:
            if num<0:
                print '请输入正数'
                return
            num = str(num)
    except:
        print '输入必须是自然数'
        return None

    result = ''
    z = 0

    for i in range(0,len(num)):
        # 把字符串转回数字,同时根据循环次数获得位数
        #值
        s = num[i]
        s = int(s)
        #位数
        weishu = len(num)-i
        if s:
            #补零
            if z:
                result+=cnList[0]
            #小权位[百十千]
            x_w = ( weishu-1 )%4
            #十位为1且为最高位:Ex:十五 十万 十三亿
            if s==1 and x_w == 1 and i == 0:
                result+=chnUnitChar[x_w]
            else:
                #汉字数字1-0
                result+=cnList[s]
                #权位
                result+=chnUnitChar[x_w]
            z = 0
        else:
            z+=1
        #节位
        if ( weishu-1 )%4==0 and z<4:
            b_w = chnUnitSection[weishu/4]
            result+=b_w
            z = 0

    return result

if __name__ == "__main__":
    #测试使用随机数
    r = random.randint(10000,10000000000)
    print r
    print NumberToChinese2(r)

以上,负数和小数添加比较简单没有太复杂的逻辑,若有错误欢迎指出

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值