题解 | #人民币转换#

人民币转换

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 广东
其他用递归做的,都有问题
点赞 回复 分享
发布于 2022-08-17 15:44 湖北
老铁,你这个代码调了多久?
点赞 回复 分享
发布于 2022-08-22 14:45 陕西
牛逼
点赞 回复 分享
发布于 2022-08-29 17:02 广东
一些大的数输出不对,比如1010000000.0
点赞 回复 分享
发布于 2023-09-30 23:33 湖北

相关推荐

hso_:哈哈哈哈哈哈我没offer一样在同一道题开喷了
投递深圳同为数码等公司10个岗位
点赞 评论 收藏
分享
27 4 评论
分享
牛客网
牛客企业服务