题解 | #学英语#

学英语

https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc

import sys



for line in sys.stdin:
    n = line.strip('\n')

# print(n)
num = [i for i in range(1,20)] + [i for i in range(20, 100, 10)]
words = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten',\
         'eleven', 'twelve', 'thirtee', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen',\
         'twenty','thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'
        ]

dic = {i:j for i, j in zip(num, words)}

# print(dic)
lst = []
n1 = n[:]
while len(n1) > 0:
    lst.append(int(n1)%1000)
    n1 = n1[:-3]

# print(lst)
# hundred, thousand, million, billion, and, zero

def translate(x):
    res = ''
    if x < 100:
        if 0 < x <= 20 or x % 10 == 0:
            res += dic[x]
        else:
            res += dic[x//10*10]+ ' ' + dic[x%10]
    elif 100 <= x < 1000:
        if x % 100 == 0:
            res += dic[x//100] + ' hundred'
        else:
            res += dic[x//100] + ' hundred and ' + translate(x%100)
    return res

tail = {0:'', 1:' thousand ', 2:' million ', 3:' billion '}

def integrate(lst):
    result = []
    res = ''
    for i in range(len(lst)):
        x = lst[i]
        if i in (0, 1, 2):
            result.append(translate(x) + tail[i])
        else:
            result.append(translate(x) + tail[i] + 'and ')
    for i in result[::-1]:
        res += i
    return res

try:
    res = integrate(lst)
    print(res)
except Exception as error:
    print(error)







全部评论

相关推荐

Twilight_m...:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 17:10
什么素质,我请问呢,要掉小珍珠了。。。又憋屈又生气
Steven267:这不喷回去?花钱是大爷,记住这个道理
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务