题解 | #人民币转换#

人民币转换

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


dic = {
    1: "壹",
    2: "贰",
    3: "叁",
    4: "肆",
    5: "伍",
    6: "陆",
    7: "柒",
    8: "捌",
    9: "玖",
    10: "拾",
    11: "拾壹",
    12: "拾贰",
    13: "拾叁",
    14: "拾肆",
    15: "拾伍",
    16: "拾陆",
    17: "拾柒",
    18: "拾捌",
    19: "拾玖",
}


def fun(n, s=""):
    if n < 20:  ## 个位
        s += dic[n]
    elif n < 100:  # 几拾几    ## 十位
        s += dic[n // 10] + "拾"  # n//10表示10的倍数,dic[n//10]表示这个数字在字典中对应的汉字
        if n % 10 != 0:  # 注意这里,测试880.23这个数据
            s += dic[n % 10]
    elif n < 1000:  # 百位
        # 800 808 880
        s += dic[n // 100] + "佰"
        if n % 100 != 0:
            if str(n)[-2] == "0":
                s += "零"
            s += fun(n % 100)
    elif n < 10000:  # 千位
        # 8888 8088 8008 8000
        s += dic[n // 1000] + "仟"
        if n % 1000 != 0:
            if str(n)[-3] == "0":
                s += "零"
            s += fun(n % 1000)
    elif n < 100000000:  # 万位
        s += fun(n // 10000) + "万"  # 注意这里是直接调用函数而不是读字典了,读作,多少多少万
        if n % 10000 != 0:
            if str(n)[-4] == "0":  # 注意这里是千位为0
                s += "零"
            s += fun(n % 10000)

    else:  # 亿
        s += dic[n // 100000000] + "亿"
        if n % 100000000 != 0:
            if str(n)[-8] == "0":
                s += "零"
            s += fun(n % 100000000)
    return s


n, n2 = input().split(".")
n = int(n)
s = "人民币"
# xx元xx分xx角
if n > 0:  # 处理xx元
    s += fun(n) + "元"

if n2 == "00":  # 0角0分
    s += "整"
if n2[0] != "0":
    s += dic[int(n2[0])] + "角"  # xx角
if n2[1] != "0":
    s += dic[int(n2[1])] + "分"  # xx分

print(s)

全部评论

相关推荐

点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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