HW.人民币转换

在这里插入图片描述

import sys
import io
#注意设置输入输出编码
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
while True:
    try:
        dict = {
            0: "零",
            1: "壹",
            2: "贰",
            3: "叁",
            4: "肆",
            5: "伍",
            6: "陆",
            7: "柒",
            8: "捌",
            9: "玖",
            10: "拾",
            100: "佰",
            pow(10, 3): "仟",
            pow(10, 4): "万",
            pow(10, 8): "亿",
        }

        string = input()
        interger_part, float_part = "", ""
        if "." not in string:
            interger_part = int(string)
            float_part = "整"
        else:
            string = string.split(".")
            interger_part = int(string[0])
            number_float_part = int(string[1])
            if number_float_part == 0:
                float_part = "整"
            else:
                float_part = ""
                if number_float_part // 10 != 0:
                    float_part += dict[number_float_part // 10] + "角"
                number_float_part = number_float_part % 10
                if number_float_part:
                    float_part += dict[number_float_part] + "分"


        def DFS(number):
            result = ""
            yi_part = number // pow(10, 8)
            number %= pow(10, 8)
            wan_part = number // pow(10, 4)
            number %= pow(10, 4)
            qian_part = number // pow(10, 3)
            number %= pow(10, 3)
            bai_part = number // pow(10, 2)
            number %= pow(10, 2)
            for num, cn in [(yi_part, "亿"), (wan_part, "万"), (qian_part, "仟"), (bai_part, "佰")]:
                if num == 0:
                    if len(result) and result[-1] != "零":
                        result += "零"
                else:
                    result += DFS(num) + cn
            if 10 < number < 20:
                # 注意这里如果十几前面有数,就要勇壹拾几
                # 否则用拾几
                if len(result) != 0:
                    last_two = "壹拾" + dict[number % 10]
                else:
                    last_two = "拾" + dict[number % 10]
            elif number == 10:
                if len(result) == 0:
                    last_two = "拾"
                else:
                    last_two = "壹拾"
            elif number <= 9:
                if len(result) == 0:
                    last_two = dict[number]
                else:
                    last_two = "零" + dict[number]
            else:
                last_two = dict[number // 10] + "拾"
                number %= 10
                if number != 0:
                    last_two += dict[number]
            if last_two[0] == "零" and len(result) and result[-1] == "零":
                result = result + last_two[1:]
            else:
                result += last_two
            return result

        interger_part = "" if interger_part == 0 else DFS(interger_part) + "元"
        print("人民币" + interger_part + float_part)
    except:
        break

猜你喜欢

转载自blog.csdn.net/dpengwang/article/details/93046894