while True:
try:
number = input().strip()
if number == "":
break
def func1(number):
dict = {
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",
20: "twenty",
30: "thirty",
40: "forty",
50: "fifty",
60: "sixty",
70: "seventy",
80: "eighty",
90: "ninety",
pow(10, 9): "billion",
pow(10, 6): "million",
pow(10, 3): "thousand",
pow(10,2): "hundred",
0:""
}
def DFS(number):
# 递归处理问题,当number为几十几的时候结束递归
# 此类问题要明确递归结束的条件
# 在数字转换的问题中, 一般都是在几十几的时候跳出循环
# 几十几之前如果不为空, 那么前面一定要加上and
space = " "
billion_part = number // pow(10,9)
number = number % pow(10,9)
million_part = number//pow(10,6)
number = number % pow(10,6)
thousand_part = number// pow(10, 3)
number = number % pow(10, 3)
hundred_part = number//pow(10,2)
number = number % pow(10,2)
jishiji = number % 100
result = ""
if billion_part != 0:
notation = DFS(billion_part)
if len(notation):
if len(result):
result += space
result += notation + space + "billion"
if million_part != 0:
notation = DFS(million_part)
if len(notation):
if len(result):
result += space
result += notation + space +"million"
if thousand_part != 0:
notation = DFS(thousand_part)
if len(notation):
if len(result):
result += space
result += notation + space +"thousand"
if hundred_part != 0:
notation = DFS(hundred_part)
if len(notation):
if len(result):
result += space
result += notation + space +"hundred"
if jishiji != 0:
if jishiji <= 20:
tmp = dict[jishiji]
else:
tmp = dict[jishiji -jishiji%10] + " " + dict[jishiji%10]
tmp = tmp.lstrip()
if len(tmp) == 0:
pass
else:
if not result.endswith("hundred"):
# if "and" not in result:
if len(result) == 0:
result = tmp
else:
result += space + tmp
else:
result = result + space + "and " + tmp
return result
if len(number) > 9 or (not number.isdigit()) or len(str(int(number))) != len(number):
return "error"
else:
number = int(number)
if number == 0:
return "zero"
else:
return DFS(number)
#注意最终处理下空格
print(" ".join(func1(number).split()))
except:
break
HW.学英语
猜你喜欢
转载自blog.csdn.net/dpengwang/article/details/93025584
今日推荐
周排行