这是一个相对紧凑且漂亮的代码版本,可以在一般意义上执行您想要的操作(适用于所有数字,而不仅仅是十二个)。
level1 = [ "", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" ]
level2 = [ "", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" ]
level3 = [ "", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" ]
level4 = [ "","thousand", "million" ]
def number2string(number):
if number == 0:
return "zero"
string = ""
nparts = (len(str(number)) + 2) / 3
filled = str(number).zfill(nparts * 3)
for i in range(nparts):
d3, d2, d1 = map(int, filled[3*i:3*(i+1)])
d4 = nparts - i - 1
string += " "*(i>0)
string += (d3>0)*(level1[d3] + " hundred" + " "*(d2*d1>0))
if d2 > 1:
string += level3[d2] + (" " + level1[d1])*(d1 >= 1)
elif d2 == 1:
string += level2[d1]*(d1 >= 1) or level3[d2]
elif d1 >= 1:
string += level1[d1]
string += (" " + level4[d4])*(d4 >= 1 and (d1+d2+d3) > 0)
return string