题解 | #人民币转换#

人民币转换

http://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b

def fun(n, s =''):
    if n < 20:  # 由于10应写作“拾”,所以第一前1-19进行查字典处理
        s += dic[n]
    elif n < 100 :  # 大于20小于100的数
        if n % 10 >= 1:  # 非整十
            s += fun(n//10) + '拾' + fun(n % 10)
        else:  # 整十
            s += fun(n//10) + '拾'
    elif n < 1000: # 大于100小于1000的数
        if n % 100 >= 10:  # 十位不为0
            s += fun(n//100) + '佰' + fun(n % 100)
        elif n % 100 > 0:  # 个位不为零
            s += fun(n//100) + '佰零' + fun(n % 100)
        else:  # 个位为零
            s += fun(n//100) + '佰'
    elif n < 10000:  # 大于1000小于10000的数
        if n % 1000 >= 100:  # 百位不为零
            s += fun(n//1000) + '仟' + fun(n % 1000)
        elif n % 1000 > 0:  # 个位不为0
            s += fun(n//1000) + '仟零' + fun(n % 1000)
        else:  # 个位为0
            s += fun(n//1000) + '仟'
    elif n < 100000000:  # 大于10000小于100000000的数
        if n % 10000 >= 1000:  # 千位不为0时
            s += fun(n//10000) + '万' + fun(n % 10000)
        elif n % 10000 > 0:  # 个位不为0
            s += fun(n//10000) + '万零' + fun(n % 10000)
        else:  # 个位为0
            s += fun(n//10000) + '万'
    else:  # 大于100000000的数
        if n % 100000000 >= 10000000:  # 千万位不为0
            s += fun(n//10000) + '亿' + fun(n % 100000000)
        elif n % 100000000 > 0:  # 个位不为0
            s += fun(n//100000000) + '亿零' + fun(n % 100000000)
        else:  # 个位为0
            s += fun(n//100000000) + '亿'
    return s

while True:
    try:
        dic = {1:'壹', 2:'贰', 3:'叁', 4:'肆', 5:'伍', 6:'陆', 7:'柒', 8:'捌', 9:'玖', 10:'拾', 11:'拾壹', 12:'拾贰', 13:'拾叁', 14:'拾肆', 15:'拾伍', 16:'拾陆', 17:'拾柒', 18:'拾捌', 19:'拾玖'}
        n, f = map(int,input().split('.'))
        if n > 0:
            s = '人民币' + fun(n) + '元'
        else:
            s = '人民币'
        if f == 0:
            s += '整'
        elif f < 10:
            s += dic[f] + '分'
        elif f % 10 == 0:
            s += dic[f//10] + '角'
        else:
            s += dic[f//10] + '角' + dic[f % 10] + '分'
        print(s)
    except:
        break

全部评论
一看代码250,一跑代码没问题!!!
2 回复 分享
发布于 2022-08-22 19:50 浙江
这个数不对,1010000000.00
1 回复 分享
发布于 2022-11-15 11:48 广东
一些大的数输出不对,比如1010000000.0
点赞 回复 分享
发布于 2023-09-30 23:33 湖北
牛逼
点赞 回复 分享
发布于 2022-08-29 17:02 广东
老铁,你这个代码调了多久?
点赞 回复 分享
发布于 2022-08-22 14:45 陕西
其他用递归做的,都有问题
点赞 回复 分享
发布于 2022-08-17 15:44 湖北

相关推荐

01-07 11:46
Java
如图:也是让我遇到逆天公司了,实习生是按天给工资,不忙直接强制休假了
baskly:公司为北京超图软件股份有限公司武汉分公司,明年公司应该会招新实习生,刷到的小伙伴快跑
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2025-12-17 16:48
今天九点半到公司,我跟往常一样先扫了眼电脑,屁活儿没有。寻思着没事干,就去蹲了个厕所,回来摸出手机刷了会儿。结果老板刚好路过,拍了我一下说上班别玩手机,我吓得赶紧揣兜里。也就过了四十分钟吧,我的直属领导把我叫到小隔间,上来就给我一句:“你玩手机这事儿把老板惹毛了,说白了,你可以重新找工作了,等下&nbsp;HR&nbsp;会来跟你谈。”&nbsp;我当时脑子直接宕机,一句话都没憋出来。后面&nbsp;HR&nbsp;找我谈话,直属领导也在旁边。HR&nbsp;说我这毛病不是一次两次了,属于屡教不改,不光上班玩手机,还用公司电脑看论文、弄学校的事儿。我当时人都傻了,上班摸鱼是不对,可我都是闲得发慌的时候才摸啊!而且玩手机这事儿,从来没人跟我说过后果这么严重,更没人告诉我在公司学个习也算犯错!连一次口头提醒都没有,哪儿来的屡教不改啊?更让我膈应的是,昨天部门刚开了会,说四个实习生里留一个转正,让大家好好表现。结果今天我就因为玩手机被开了。但搞笑的是,开会前直属领导就把我叫去小会议室,明明白白告诉我:“转正这事儿你就别想了,你的学历达不到我们部门要求,当初招你进来也没打算给你这个机会。”合着我没入贵厂的眼是吧?可我都已经被排除在转正名单外了,摸个鱼至于直接把我开了吗?真的太离谱了!
rush$0522:转正名单没进,大概率本来就没打算留你
摸鱼被leader发现了...
点赞 评论 收藏
分享
评论
28
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务