我能够使这个函数在某些情况下将整数转换为单词,但当输入大于120时仍然有问题;对于121122、、、和任何大于..20的值,即221233等。。它返回100 None(对于120以上的情况)。如果输入超过1020,它将不起作用。你知道吗
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),end="")
elif (n>=k)and (n<m):
if n%k==0:
print(d.get(n//k),end=" ")
print("thousand")
else:
print(d.get(n//k),end=" ")
print("thousand",end=" ")
print(d.get(n%k))
int_to_word(n)
这看起来像家庭作业,所以我会暗示而不是完全提供你的答案。你知道吗
请注意,(在美式英语中)处理“千”与处理小于1000的数字完全相同。同样的情况(在美国英语中)也适用于10E6(百万),10E9(十亿),10E12(万亿),等等。据我所知,这在印度英语中是不同的,有10万,什么都没有。同样,在那些认为10E9=“10亿”和10E12=“10亿”的国家,你肯定会想根据你的导师的期望来调整你的答案。你知道吗
总之,107000是“107000”,123456是“123000456”
您可以看到这是一个循环的机会,因为每次循环的逻辑都是相同的。你知道吗
话虽如此,你将不得不把注意力集中在数字小于1000的部分。百位部分相当简单:401是“四百零一”,525是“五百二十五”,所以您所需要做的就是检查一个有效的百位数字并添加/不添加适当的文本。你知道吗
下一步,我们来讨论十位数和一位数。看看你的代码,你有太多的逻辑。我建议您明确地将各个部分分开,这样您就知道您要处理的是什么:
现在你可以问:
tens_ones
在d
吗?如果是这样,你就完了。如果不是,你就得把它分成十部分(再乘以10回到30或者别的什么,在d
)和一部分,在d
。你知道吗对于您的代码,我认为问题在于您没有考虑如何正确处理数百和数千数字。您的代码只处理小于1000000的数字。以下是根据您的想法修改的代码:
在[2]中:int\u to \u word(999999)
玖拾玖万玖仟玖佰玖拾玖
相关问题 更多 >
编程相关推荐