【发布时间】:2019-02-04 00:45:08
【问题描述】:
我正在使用 Python 3.7 并想编写拼写数字(非常大或小)的程序。我写了一些东西,但问题是如果我写这样的代码,那将是多余的而且太长了。无论输入有多大,有没有其他方法可以打印拼写?例如,如果我给出输入 659556009,我希望得到类似 65590555609 的输出。或者,如果我给 2001,它会给我 2001。 谁能帮帮我?
num = int(input("number :"))
def word(num):
d1= {0:'Zero',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:'Ninteen',20:'Twenty',30:'Thirty',40:'Fourty',50:'Fifty',60:'Sixty',70:'Seventy',80:'Eighty',90:'Ninty'}
k = 1000
m = k * 1000
if (num<20):
return d1[num]
if (num<100):
if num % 10 == 0:
return d1[num]
else:
return d1[num // 10 * 10] + ' ' + d1[num % 10]
if (num < k):
if num % 100 == 0:
return d1[num // 100] + ' hundred'
else:
return d1[num // 100] + ' hundred ' + word(num % 100)
if (num < m):
if num % k == 0:
return word(num // k) + ' thousand'
else:
return word(num // k) + ' thousand, ' + word(num % k)
print (word(num))
谢谢。
【问题讨论】:
-
顺便说一下inflect包
number_to_words函数也可以做到这一点。 -
有没有其他不使用inflect包的方式编写程序?
标签: python recursion redundancy