题解 | #学英语#
学英语
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