[python刷题]牛客网11——把罗马转化为英文描述

题目描述

有一个非负整数,请编写一个算法,打印该整数的英文描述。

给定一个int x,请返回一个string,为该整数的英文描述。

测试样例:

1234
返回:"One Thousand,Two Hundred Thirty Four"
class ToString:
    def toString(self, num):
        # write code here
        to19 = 'One Two Three Four Five Six Seven Eight Nine Ten Eleven Twelve Thirteen Fourteen Fifteen Sixteen Seventeen Eighteen Nineteen'.split()
        tens = 'Twenty Thirty Forty Fifty Sixty Seventy Eighty Ninety'.split()
        def words(n):
            if n < 20 : return to19[n - 1 : n]
            if n < 100 : return [tens[n//10-2]] + words(n%10)
            if n < 1000 : return [to19[n//100 - 1]] + ["Hundred"] + words(n % 100)
            for p,w in enumerate(('Thousand','Million','Billion'),1):
                #[(1, 'Thousand'), (2, 'Million'), (3, 'Billion')]
                if n < 1000 ** (p+1):
                    return words(n//1000 ** p) + [w] + words(n % 1000 ** p)
        return " ".join(words(num)).replace("Thousand ","Thousand,").replace("lion ","lion,") or "Zero"

猜你喜欢

转载自blog.csdn.net/TOMOCAT/article/details/86073880