我正在创建一个数字到单词的翻译,并有一个例外,它的工作。你知道吗
例如,如果在4056
中键入了数字,则在'four thousand zero hundred fifty six'
输出时,我很难计算零。此外,如果输入50
,则输出'fifty zero'
。你知道吗
到目前为止,我掌握的情况如下:
def convert(number_str):
d1 = {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'}
l2 = ['twenty','thirty','fourty','fifty','sixty','seventy','eighty','ninety']
if (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])
elif (int(number_str) >= 1000) and (int(number_str) <9999):
thousands, hundreds1 = divmod(number_str,1000)
hundreds, tens1 = divmod(hundreds1,100)
tens, single = divmod(tens1,10)
return(d1[thousands]+' thousand '+d1[hundreds]+' hundred '+l2[tens-2]+" "+d1[single])
def main():
user_input = input('> ')
while user_input != 'quit':
print(convert(int(user_input)))
user_input = input('> ')
main()
为了更好地处理使用零来支持这个程序,我可以添加什么逻辑?提前谢谢!你知道吗
我们在语言中使用的编号系统在使用有效地使用零作为占位符的阿拉伯语编号系统之前就已经发展得很好了。你知道吗
我可以想象,在某种逻辑中,任何零都不会被注释。纯粹地把它看作一个占位符,使左边的数字具有更高的10^n值。你知道吗
请注意,它是在两个地方编辑的。首先让零成为一个空字符串,然后抓住它只是零的条件。你知道吗
您需要为零添加特殊条件。例如,50的问题可以用if语句检查:
您可以编写一个类似的if来处理数百位中的0。你知道吗
相关问题 更多 >
编程相关推荐