<p>正如@gelonida所建议的,如果你用函数来做“肮脏的工作”会更好。例如,我修改了您的脚本,添加了两个函数,一个用于将数字划分为长度为3的块,另一个用于对前面提到的块进行“文字化”。就像这样,我相信代码会变得更简单、更简短、更易读:</p>
<pre><code>def wordify(n):
s=''
if len(n)==3:
s+=on[int(n[0])]+' hundred '
if len(n)>1:
if n[-2]=='1':
s+=teen[int(n[-1])]
return s
else:
s+=tens[int(n[-2])]+' '
s+=on[int(n[-1])]
return s
a=input('Insert number: ')
gb3 = lambda x: [x[i:i+3] for i in range(0,len(x),3)]
rem = len(a)%3
tokens=[a[:rem]]+gb3(a[rem:]) if rem!=0 else gb3(a[rem:])
l = len(tokens)
on=["", "one","two","three", "four","five","six","seven", "eight", "nine"]
teen=["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"]
tens=["","","twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"]
grt=["","thousand","million","billion","trillion","quadrillion","quintillion","sextillion","septillion","octillion","nonillion","decillion","undecillion","duodecillion","tredecillion","quattuor-decillion","quindecillion","sexdecillion","septen-decillion","octodecillion","novemdecillion","vigintillion"]
print()
word_number = ''
for k in range(l):
if int(tokens[k])!=0:
word_number += wordify(tokens[k])+' '+grt[l-k-1]+' '
print(' '.join([w for w in word_number.split(' ') if len(w)>1]))
</code></pre>
<p>上一次打印调用中,我使用了一个快速的方法来均匀地排列单词。
告诉我你是怎么想的!你知道吗</p>