题解 | #学英语#

学英语

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)







全部评论

相关推荐

我见java多妩媚:大外包
点赞 评论 收藏
分享
09-20 09:17
已编辑
中国矿业大学 机械设计师
大连理工大学机械工程师:拖拉机研究院1.5
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务