<p>对于您的代码,我认为问题在于您没有考虑如何正确处理<strong>数百</strong>和<strong>数千</strong>数字。您的代码只处理<strong>小于<strong>1000000的数字。以下是根据您的想法修改的代码:</p>
<pre><code>def int_to_word(n):
d={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:'nineteen',20:'twenty',30:'thirty',40:'forty',
50:'fifty',60:'sixty',70:'seventy',80:'eighty',
90:'ninety'}
k=1000
m=k*1000
if (n <20):
print(d.get(n))
elif (n >=20 and n <100):
if n%10==0:
print(d.get(n))
else:
print(d.get(n//10*10),d.get(n%10),end="")
elif (n>=100) and (n<k):
if n%100==0:
print(d[n//100],end=" ")
print("hundred")
else :
print(d.get(n//100),"hundred",d.get(n%100//10*10),d.get(n%100%10),end=" ")
elif (n>=k)and (n<m):
if n%k==0:
print(d.get(n//k//10*10),d.get(n//k%10),end=" ")
print("thousand")
else:
if n//k > 100:
print(d.get(n//k//100),end=" ")
print("hundred",end=" ")
print(d.get(n//k%100//10*10),d.get(n//k%100%10),end=" ")
print("thousand",end=" ")
elif n//k >10:
print(d.get(n//k//10*10),d.get(n//k%10),end=" ")
print("thousand",end=" ")
else:
print(d.get(n//k%10),end=" ")
print("thousand",end=" ")
print(d.get(n%k//100),"hundred",d.get(n%k%100//10*10),d.get(n%k%100%10),end=" ")
</code></pre>
<p>在[2]中:int\u to \u word(999999)</p>
<p>玖拾玖万玖仟玖佰玖拾玖</p>