题解 | #学英语#

学英语

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

英文的数字以三位进,拿到输入后用取商和模的方式三位分隔,得到 个位-百位,千位-十万位,百万位-亿位

如:316540,个位-百位:540,千位-十万位:316,百万位-亿位:000
这样每个数字最大是 999

定义两个函数,分别处理 100 以内的数字转英文,100-999 以内的数字转英文,将转换的结果添加到列表,使用空格拼接为字符串后输出

one_to_nineteen = ['zero', 'one', 'two', 'three', 'four', 'five', 'six',
                   'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve',
                   'thirteen', 'fourteen', 'fifteen', 'sixteen',
                   'seventeen', 'eighteen', 'nineteen']
twenty_to_ninety = [0, 0, 'twenty', 'thirty', 'forty', 'fifty', 'sixty',
                    'seventy', 'eighty', 'ninety']


# 100 以内转英文
def less_than_hundred(num):
    if num > 0:
        if num < 20:
            output.append(one_to_nineteen[num])
        else:
            output.append(twenty_to_ninety[num // 10])
            if num % 10 != 0:
                output.append(one_to_nineteen[num % 10])


# 100-999 以内转英文
def less_than_thousand(num):
    if num >= 100:
        output.append(one_to_nineteen[num // 100])
        output.append('hundred')
        if num % 100 != 0:
            output.append('and')
    less_than_hundred(num % 100)


while True:
    try:
        num = int(input())
        output = []
        a = num % 1000  # 个、十、百位
        b = (num // 1000) % 1000  # 千、万、十万位
        c = (num // 1000000) % 1000  # 百万、千万、亿位
        if c > 0:
            less_than_thousand(c)
            output.append('million')
        if b > 0:
            less_than_thousand(b)
            output.append('thousand')
        if a > 0:
            less_than_thousand(a)
        print(' '.join(output))
    except:
        break
全部评论

相关推荐

2 2 评论
分享
牛客网
牛客企业服务