题解 | #人民币转换#

人民币转换

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

def fun():
    def print_epoch(four_num, big_unit):
        # 每四位数字化为一个单位
        unit, s, four_num = ['仟', '佰', '拾'], '', four_num.rjust(4, '0')
        if int(four_num[0]) > 0:
            s += num_map_word[int(four_num[0])] + unit[0]
            s += num_map_word[int(four_num[1])] + (unit[1] if int(four_num[1]) != 0 else '')
            s += num_map_word[int(four_num[2])] + (unit[2] if int(four_num[2]) != 0 else '')
            s += num_map_word[int(four_num[3])] if int(four_num[3]) != 0 else ''
        elif int(four_num[1]) > 0:
            s += num_map_word[int(four_num[1])] + unit[1]
            s += num_map_word[int(four_num[2])] + (unit[2] if int(four_num[2]) != 0 else '')
            s += num_map_word[int(four_num[3])] if int(four_num[3]) != 0 else ''
        elif int(four_num[2]) > 0:
            s += (num_map_word[int(four_num[2])] if int(four_num[2]) != 1 else '') + unit[2]
            s += num_map_word[int(four_num[3])]
        else:
            s += num_map_word[int(four_num[3])] if int(four_num[3]) != 0 else ''
        s = (s + big_unit).replace('零零', '零').replace('零壹拾', '零拾').replace('仟零万', '仟万').replace('万万', '亿')
        return s

    def print_two(s):
        res = f'{num_map_word[int(s[0])]}角{num_map_word[int(s[1])]}分'
        res = res.replace('零角零分', '整').replace('零角', '').replace('零分', '')
        return res
    # 数字对应中文的列表
    num_map_word = '零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾'.split('、')
    left, right = input().split('.')
    # 小数点左边的
    left_list = [left[max(i - 4, 0):i] for i in range(len(left), 0, -4)][::-1]
    ret = [print_epoch(i, '万' * idx) for idx, i in enumerate(left_list[::-1])]
    ret = ['人民币'] + ret[::-1] + ['元']
    # 小数点右边的
    ret.append(print_two(right))
    # 最终合并的结果
    ret_final = ''.join(ret).replace('人民币元', '人民币')
    print(ret_final)


fun()

全部评论

相关推荐

04-29 22:35
门头沟学院 Java
牛友说改了名字能收到offer:旧图新发查看图片
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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