简式数字成词 Python

Short Form Number into Words Python

在更改数字输入并将其转换为短格式单词方面寻求帮助:

for instance 4,000,000,000 -> 4 Trillion, 
ones = ["", "one ","two ","three ","four ", "five ", "six ","seven ","eight ","nine "]
tens = ["ten ","eleven ","twelve ","thirteen ", "fourteen ", "fifteen ","sixteen ","seventeen ","eighteen ","nineteen "]
twenties = ["","","twenty ","thirty ","forty ", "fifty ","sixty ","seventy ","eighty ","ninety "]
thousands = ["","thousand ","million ", "billion ", "trillion ", "quadrillion ", "quintillion ", "sextillion ", "septillion ","octillion ", "nonillion ", "decillion ", "undecillion ", "duodecillion ", "tredecillion ", "quattuordecillion ", "quindecillion", "sexdecillion ", "septendecillion ",  "octodecillion ", "novemdecillion ", "vigintillion "]

def wordNumber(number):
    number = int(number)  

number = str(input("Enter the digits: "))    
print(wordNumber(number))

我完全不知道下一步该去哪里,我在网上看了很多程序,这些程序用完整的数字 (10)--> 10 做完全正确的事情。

Humanize 图书馆将为您完成:

>>> humanize.intword(12345591313)
'12.3 billion'

需要大量代码。你可以这样做:

或者只使用模块。示例:num2words

>>> from num2words import num2words
>>> num2words(42)
forty-two
>>> num2words(42, ordinal=True)
forty-second
>>> num2words(42, lang='fr')
quarante-deux

如果您需要手动执行此操作,这里是一种方法的部分示例。

def f(number):
    ones    =   [
                    "",
                    "one",
                    "two",
                    "three",
                    "four",
                    "five",
                    "six",
                    "seven",
                    "eight",
                    "nine",
                ]
    teens   =   {
                    10:"ten",
                    11:"eleven",
                    12:"twelve",
                    13:"thirteen",
                    14:"fourteen",
                    15:"fifteen",
                    16:"sixteen",
                    17:"seventeen",
                    18:"eighteen",
                    19:"nineteen",
                }
    tens    =   [
                    "",
                    "teen",
                    "twenty",
                    "thirty",
                    "fourty",
                    "fifty",
                    "sizty",
                    "seventy",
                    "eighty",
                    "ninety",
                ]
    hundred =   [ "%shundred" % one for one in ones ]
    place_value   = {1:ones,2:tens,3:hundred}
    number_string = ""
    number        = list(str(number))
    number.reverse()
    number        = [(place+1, int(digit)) for place, digit in enumerate(number)]
    number.reverse()
    number_iter = number.__iter__()
    for place, digit in number_iter:
        print place, digit
        if place == 2 and digit == 1:
            place, digit = number_iter.next()
            number_string += teens[10 + digit]
        else:
            number_string += place_value[place][digit]
        print number_string