python - 如何在不使用 num2word 库的情况下将数字转换为单词?

标签 python python-3.x

我需要将 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....

附言是的,我知道 num2word 库,但不允许我使用它。

最佳答案

你可以通过使用一个字典和一个 try/except 子句来简化这件事:

num2words = {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', 0: 'Zero'}

>>> def n2w(n):
        try:
            print num2words[n]
        except KeyError:
            try:
                print num2words[n-n%10] + num2words[n%10].lower()
            except KeyError:
                print 'Number out of range'

>>> n2w(0)
Zero
>>> n2w(13)
Thirteen        
>>> n2w(91)
Ninetyone
>>> n2w(21)
Twentyone
>>> n2w(33)
Thirtythree

关于python - 如何在不使用 num2word 库的情况下将数字转换为单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19504350/

相关文章:

python - os.popen().read() - charmap 解码错误

python - Windows:获取 python 项目使用的所有模块/包

python - 如何在 wsgi 应用程序中使用 gzip 编码?

python - 如何将 RFC822 转换为 python 日期时间对象?

python - 使用多个 Numpy 数组作为一个 Seaborn 箱线图输入的简单方法

python mysqldb 打印文本,即使代码中没有打印语句

python - 如何阻止 BeautifulSoup 转义内联 javascript

python - turtle 颜色不随变量和列表而改变

python - Django 中的 `request.data[' param-name'] ` or ` request.data.get ('param-name' )` 之间有什么不同

python-3.x - 将多个文件从 Redshift 卸载到 S3