题解 | #学英语#

学英语

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

n = int(input())
new = ""
k, m, b = False, False, False
if n < 1000000 and n >= 1000:
    k = True
if n < 1000000000 and n >= 1000000:
    m = True
if n >= 1000000000:
    b = True
vocab = {
    "1": "one",
    "2": "two",
    "3": "three",
    "4": "four",
    "5": "five",
    "6": "six",
    "7": "seven",
    "8": "eight",
    "9": "nine",
    "10": "ten",
    "11": "eleven",
    "12": "twelve",
    "13": "thirteen",
    "14": "fourteen",
    "15": "fifteen",
    "16": "sixteen",
    "17": "seventeen",
    "18": "eighteen",
    "19": "nineteen",
}
vocab2 = {
    "2": "twenty",
    "3": "thirty",
    "4": "forty",
    "5": "fifty",
    "6": "sixty",
    "7": "seventy",
    "8": "eighty",
    "9": "ninety",
}


def kd(n, new):
    n = str(n)
    if n == "000":
        return new
    if len(n) == 3:
        new = "".join([new, vocab[n[0]]])
        a = int(n) % 100
        if a == 0:
            new = " ".join([new, "hundred "])
            return new
        new = " ".join([new, "hundred and "])
        if a >= 20:
            a = str(a)
            new = "".join([new, vocab2[a[0]]])
            if a[1] == '0':
                return new
            new = " ".join([new, vocab[a[1]]])
        elif a < 20:
            a = str(a)
            new = "".join([new, vocab[a]])
    elif len(n) < 3:
        if n == "00":
            return new
        if int(n) >= 20:
            new = "".join([new, vocab2[n[0]]])
            if n[1] == '0':
                return new
            new = " ".join([new, vocab[n[1]]])
        elif int(n) < 20:
            new = "".join([new, vocab[n]])
    return new


def md(n, new):
    n = str(n)
    if n == "000":
        return new
    if len(n) == 3:
        new = "".join([new, vocab[n[0]]])
        a = int(n) % 100
        if a == 0:
            new = " ".join([new, "hundred "])
            return "".join([new, ' thousand '])
        new = " ".join([new, "hundred and "])
        if a >= 20:
            a = str(a)
            new = "".join([new, vocab2[a[0]]])
            if a[1] == '0':
                return "".join([new, ' thousand '])
            new = " ".join([new, vocab[a[1]]])
        elif a < 20:
            a = str(a)
            new = "".join([new, vocab[a]])
    elif len(n) < 3:
        if n == "00":
            return "".join([new, ' thousand '])
        if int(n) >= 20:
            new = "".join([new, vocab2[n[0]]])
            if n[1] == '0':
                return "".join([new, ' thousand '])
            new = " ".join([new, vocab[n[1]]])
        elif int(n) < 20:
            new = "".join([new, vocab[n]])
    return "".join([new, ' thousand '])


def bd(n, new):
    n = str(n)
    if n == "000":
        return new
    if len(n) == 3:
        new = "".join([new, vocab[n[0]]])
        a = int(n) % 100
        if a == 0:
            new = " ".join([new, "hundred "])
            return "".join([new, ' million '])
        new = " ".join([new, "hundred and "])
        if a >= 20:
            a = str(a)
            new = "".join([new, vocab2[a[0]]])
            if a[1] == '0':
                return "".join([new, ' million '])
            new = " ".join([new, vocab[a[1]]])
        elif a < 20:
            a = str(a)
            new = "".join([new, vocab[a]])
    elif len(n) < 3:
        if n == "00":
            return "".join([new, ' million '])
        if int(n) >= 20:
            new = "".join([new, vocab2[n[0]]])
            if n[1] == '0':
                return "".join([new, ' million '])
            new = " ".join([new, vocab[n[1]]])
        elif int(n) < 20:
            new = "".join([new, vocab[n]])
    return "".join([new, ' million '])

def bu(n, new):
    n = str(n)
    if n == "000":
        return new
    if len(n) == 3:
        new = "".join([new, vocab[n[0]]])
        a = int(n) % 100
        if a == 0:
            new = " ".join([new, "hundred "])
            return "".join([new, ' billion '])
        new = " ".join([new, "hundred and "])
        if a >= 20:
            a = str(a)
            new = "".join([new, vocab2[a[0]]])
            if a[1] == '0':
                return "".join([new, ' billion '])
            new = " ".join([new, vocab[a[1]]])
        elif a < 20:
            a = str(a)
            new = "".join([new, vocab[a]])
    elif len(n) < 3:
        if n == "00":
            return "".join([new, ' billion '])
        if int(n) >= 20:
            new = "".join([new, vocab2[n[0]]])
            if n[1] == '0':
                return "".join([new, ' billion '])
            new = " ".join([new, vocab[n[1]]])
        elif int(n) < 20:
            new = "".join([new, vocab[n]])
    return "".join([new, ' billion '])

if n < 1000:
    print(kd(n, new))
elif n < 1000000 and n >= 1000:
    n = str(n)
    lenth = len(n)
    new = md(int(n[:lenth-3]), new)
    print(kd(int(n[lenth-3:]), new).strip())
elif n < 1000000000 and n >= 1000000:
    n = str(n)
    lenth = len(n)
    new = bd(int(n[:lenth-6]), new)
    new = md(int(n[lenth-6:lenth-3]), new)
    print(kd(int(n[lenth-3:]), new).strip())
elif n >= 1000000000:
    n = str(n)
    lenth = len(n)
    new = bu(int(n[:lenth-9]), new)
    new = bd(int(n[lenth-9:lenth-6]), new)
    new = md(int(n[lenth-6:lenth-3]), new)
    print(kd(int(n[lenth-3:]), new).strip())

全部评论

相关推荐

爱吃肉的伊登在写日记:好棒,27届简历能做成这个样子,但是第一个项目感觉cover住难度还是不小的,特别是二面的时候肯定要对分布式系统设计这一块儿有高出正常面试者的水平才行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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