2016-02-18 63 views
-1

在改變號碼輸入,並將其轉換爲短格式字尋找幫助:簡短表格編號爲詞的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來完成確切的事情。

回答

0

如果您需要手動做到這一點,這裏是去了解的一種方式的部分示例。

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 
+0

謝謝,我會告訴你這是如何解決的! – PythonLearner

+0

這是迄今爲止最好的代碼,但我不得不去另一條路線。你能看到我的下一篇文章嗎? – PythonLearner

+0

我發佈了我最近的代碼,因爲我有困難,在這裏:http://www.pythontutor.com/visualize.html#togetherjs=Td1Iwzyix8 – PythonLearner

1

Humanize庫會爲你做的:

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

從未聽說過人性化圖書館。謝謝。我會看看是否可以導入。 – PythonLearner

0

這是需要大量的代碼。你可以這樣做: https://stackoverflow.com/a/19506803/3260314

或者只是使用模塊。例如:num2words

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

這可以工作,但它的問題是,num2words不可用於所有python實例。 – PythonLearner