题解 | #人民币转换#
人民币转换
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()