题解 | #学英语#

学英语

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

"""
阿拉伯数字转英文数字
具体规则如下:
1.在英语读法中三位数字看成一整体,后面再加一个计数单位。从最右边往左数,三位一单位,例如12,345 等
2.每三位数后记得带上计数单位 分别是thousand, million, billion.
3.公式:百万以下千以上的数 X thousand X, 10亿以下百万以上的数:X million X thousand X, 10 亿以上的数:X billion X million X thousand X. 每个X分别代表三位数或两位数或一位数。
4.在英式英语中百位数和十位数之间要加and,美式英语中则会省略,我们这个题目采用加上and,百分位为零的话,这道题目我们省略and

下面再看几个数字例句:
22: twenty two
100:  one hundred
145:  one hundred and forty five
1,234:  one thousand two hundred and thirty four
8,088:  eight thousand (and) eighty eight (注:这个and可加可不加,这个题目我们选择不加)
486,669:  four hundred and eighty six thousand six hundred and sixty nine
1,652,510:  one million six hundred and fifty two thousand five hundred and ten
"""

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


def tran(d):
    """阿拉伯正整数to英文正整数"""
    if d < 20:
        r = w1[d]
    elif 20 <= d <= 99:
        r = w2[d // 10]
        if d % 10:  # 避免 fifty zero
            r += " " + w1[d % 10]
    elif 100 <= d <= 999:
        r = w1[d // 100] + " hundred"
        if d % 100:
            r += " and " + tran(d % 100)
    elif 1000 <= d < 10 ** 6:
        r = tran(d // 1000) + " thousand"
        if d % 1000:
            r += " " + tran(d % 1000)
    elif 10 ** 6 <= d < 10 ** 9:
        r = tran(d // 10 ** 6) + " million"
        if d % 10 ** 6:
            r += " " + tran(d % 10 ** 6)
    elif 10 ** 9 <= d < 10 ** 12:
        r = tran(d // 10 ** 9) + " billion"
        if d % 10 ** 9:
            r += " " + tran(d % 10 ** 9)
    return r


if __name__ == "__main__":
    # while True:
    n = int(input())
    print(tran(n))

全部评论

相关推荐

头顶尖尖的程序员:我是26届的不太懂,25届不应该是找的正式工作吗?为什么还在找实习?大四还实习的话是为了能转正的的岗位吗
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-01 17:00
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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