HW。英語を学びます

ここに画像を挿入説明

while True:
    try:
        number = input().strip()
        if number == "":
            break


        def func1(number):
            dict = {
                1: "one",
                2: "two",
                3: "three",
                4: "four",
                5: "five",
                6: "six",
                7: "seven",
                8: "eight",
                9: "nine",
                10: "ten",
                11: "eleven",
                12: "twelve",
                13: "thirteen",
                14: "fourteen",
                15: "fifteen",
                16: "sixteen",
                17: "seventeen",
                18: "eighteen",
                19: "nineteen",
                20: "twenty",
                30: "thirty",
                40: "forty",
                50: "fifty",
                60: "sixty",
                70: "seventy",
                80: "eighty",
                90: "ninety",
                pow(10, 9): "billion",
                pow(10, 6): "million",
                pow(10, 3): "thousand",
                pow(10,2): "hundred",
                0:""
            }
            def DFS(number):
                # 递归处理问题,当number为几十几的时候结束递归
                # 此类问题要明确递归结束的条件
                # 在数字转换的问题中, 一般都是在几十几的时候跳出循环
                # 几十几之前如果不为空, 那么前面一定要加上and
                space = " "
                billion_part  = number // pow(10,9)
                number = number % pow(10,9)
                million_part = number//pow(10,6)
                number = number % pow(10,6)
                thousand_part = number// pow(10, 3)
                number = number % pow(10, 3)
                hundred_part = number//pow(10,2)
                number = number % pow(10,2)
                jishiji = number % 100
                result = ""
                if billion_part != 0:
                    notation = DFS(billion_part)
                    if len(notation):
                        if len(result):
                            result += space
                        result += notation + space + "billion"

                if million_part != 0:
                    notation = DFS(million_part)
                    if len(notation):
                        if len(result):
                            result += space
                        result += notation  + space +"million"

                if thousand_part != 0:
                    notation = DFS(thousand_part)
                    if len(notation):
                        if len(result):
                            result += space
                        result +=  notation + space +"thousand"

                if hundred_part != 0:
                    notation = DFS(hundred_part)
                    if len(notation):
                        if len(result):
                            result += space
                        result += notation + space +"hundred"

                if jishiji != 0:
                    if jishiji <= 20:
                        tmp = dict[jishiji]
                    else:
                        tmp = dict[jishiji -jishiji%10] + " "  + dict[jishiji%10]
                        tmp = tmp.lstrip()

                    if len(tmp)  == 0:
                        pass
                    else:
                        if not result.endswith("hundred"):
                        # if "and" not in result:
                            if len(result) == 0:
                                result = tmp
                            else:
                                result += space + tmp
                        else:
                            result =  result + space + "and " + tmp
                return result
            if len(number) > 9 or (not number.isdigit()) or len(str(int(number))) != len(number):
                return  "error"
            else:
                number = int(number)
                if number == 0:
                    return "zero"
                else:
                    return DFS(number)
        #注意最终处理下空格
        print(" ".join(func1(number).split()))
    except:
        break

おすすめ

転載: blog.csdn.net/dpengwang/article/details/93025584