描述

Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文:

具体规则如下:
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

说明:
数字为正整数,不考虑小数,转化结果为英文小写;
保证输入的数据合法
关键字提示:and,billion,million,thousand,hundred。

数据范围:1 \le n \le 2000000 \1n2000000 

本题含有多组输入数据。

输入描述:

输入多行long型整数

输出描述:

输出相应的英文写法

示例1

输入:
22
100
145
1234
8088
486669
1652510
复制
输出:
twenty two
one hundred
one hundred and forty five
one thousand two hundred and thirty four
eight thousand eighty eight
four hundred and eighty six thousand six hundred and sixty nine
one million six hundred and fifty two thousand five hundred and ten
shuzi=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,30,40,50,60,70,80,90]
english=["one","two","three","four","five","six","seven","eight","nine","ten","elven","twlve","thirteen","forteen","fifteen","sixteen","seventeen","eigtheen","ninteen","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"]
def two_weido(n):
    n=int(n)
    ge=n % 10
    shi=n - ge
    if n in shuzi:
        print(english[shuzi.index(n)],end="")
    else:
        print(english[shuzi.index(shi)] , english[shuzi.index(ge)],end="")
        
def three_weido(n):
    n=int(n)
    bai=n//100
    two_wei=n%100
    and_fu=" "   
    if two_wei>=1:
        and_fu=" and "
    if two_wei==0:
        print(english[shuzi.index(bai)]+" hundred",end="")
    elif bai in shuzi:
        print(english[shuzi.index(bai)]+" hundred"+and_fu,end="")
        two_weido(two_wei)
    elif bai==0:
        two_weido(two_wei)

def four_weido(n):
    n=int(n)
    qian=n//1000
    bai_shi_ge=n%1000
    if qian in shuzi:
        print(english[shuzi.index(qian)]+" thousand ",end="")
        three_weido(bai_shi_ge)
def five_weido(n):
    n=int(n)
    wan_qian=n//1000
    bai_shi_ge=n%1000
    if wan_qian in shuzi:
        print(english[shuzi.index(wan_qian)]+" thousand ",end="")
        three_weido(bai_shi_ge)
    else:
        wan_qian_2wei=wan_qian-wan_qian%10
        print(english[shuzi.index(wan_qian_2wei)] , english[shuzi.index(wan_qian%10)]+" thousand ",end="")
        three_weido(bai_shi_ge)
def six_weido(n):
    n=int(n)
    bai_shi_ge_qian=n//1000
    bai_shi_ge=n%1000
    three_weido(bai_shi_ge_qian)
    print(" thousand ",end="")
    three_weido(bai_shi_ge)
def seven_weido(n):
    n=int(n)
    baiwan=n//1000000
    if baiwan in shuzi:
        print(english[shuzi.index(baiwan)]+" million ",end="")
        bai_6=n%1000000
        six_weido(bai_6)
while True:
    try:
        n=input()
        if len(n) ==1:
            print(english[shuzi.index(n)])
        elif len(n) ==2:
            two_weido(n)
        elif len(n) ==3:
            three_weido(n)
        elif len(n)==4:
            four_weido(n)
        elif len(n)==5:
            five_weido(n)
        elif len(n)==6:
            six_weido(n)
        elif len(n)==7:
            seven_weido(n)
        print("") 
    except:
        break