1. 程式人生 > >[python刷題]牛客網11——把羅馬轉化為英文描述

[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"