描述
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
下面再看几个数字例句:
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
说明:
数字为正整数,不考虑小数,转化结果为英文小写;
保证输入的数据合法
本题含有多组输入数据。
具体规则如下:
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 five1,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 \1≤n≤2000000
输入描述:
输入多行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 tenshuzi=[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