<p>我们在语言中使用的编号系统在使用有效地使用零作为占位符的阿拉伯语编号系统之前就已经发展得很好了。你知道吗</p>
<p>我可以想象,在某种逻辑中,任何零都不会被注释。纯粹地把它看作一个占位符,使左边的数字具有更高的10^n值。你知道吗</p>
<pre><code>def convert(number_str):
d1 = {0: '',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'}
# Changed zero to an empty string
l2 = ['twenty','thirty','fourty','fifty','sixty','seventy','eighty','ninety']
if int(number_str) == 0: # Catches the unique case when zero is mentioned
return('zero')
elif (int(number_str) >= 1) and (int(number_str) < 19):
return(d1[number_str])
elif (int(number_str) >= 20) and (int(number_str) <=99):
tens, single = divmod(number_str, 10)
return l2[tens-2] + " " + d1[single]
elif (int(number_str) >= 100) and (int(number_str) <=999):
hundreds, tens1 = divmod(number_str, 100)
tens, single = divmod(tens1,10)
return(d1[hundreds]+' hundred '+((l2[tens-2]+" "+d1[single]) if tens > 1 else d1[tens*10+single]))
# Added a conditional statement above to deal with numbers ending
# in a number less than 20
elif (int(number_str) >= 1000) and (int(number_str) <=9999):
thousands, hundreds = divmod(number_str,1000)
return(d1[thousands]+' thousand '+ convert(hundreds))
# Added a recursive call to save code
def main():
user_input = input('> ')
while user_input != 'quit':
print(convert(int(user_input)))
user_input = input('> ')
main()
</code></pre>
<p>请注意,它是在两个地方编辑的。首先让零成为一个空字符串,然后抓住它只是零的条件。你知道吗</p>