我需要将 1 - 99 的数字转换为单词。这是我到目前为止得到的:
num2words1 = {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'}
num2words2 = ['Twenty', 'Thirty', 'Forty', 'Fifty', 'Sixty', 'Seventy', 'Eighty', 'Ninety']
def number(Number):
if (Number > 1) or (Number < 19):
return (num2words1[Number])
elif (Number > 20) or (Number < 99):
return (num2words2[Number])
else:
print("Number Out Of Range")
main()
def main():
num = eval(input("Please enter a number between 0 and 99: "))
number(num)
main()
现在,我目前遇到的最大问题是 if、elif 和 else 语句似乎不起作用。只有第一个 if 语句运行。
第二个问题是创建数字的字符串版本 20-99….
PS 是的,我知道 num2word 库,但不允许我使用它。
原文由 user1919840 发布,翻译遵循 CC BY-SA 4.0 许可协议
你的第一个语句逻辑不正确。除非
Number
为 1 或更小,否则该语句 始终 为真; 200 也大于 1。使用
and
代替,并在可接受的值中包括1
:您也可以使用链接:
对于 20 或更大的数字,使用
divmod()
得到十位和余数:演示:
然后使用这些值从零件中构建您的数字:
不要忘记考虑数字高于 20 且 divmod 操作没有余数的情况:
全部放在一起: