簡體   English   中英

如何將數字轉換為單詞python 3

[英]How to convert numbers to words python 3

嘗試將數字轉換為單詞時遇到一個問題:當我輸入80時崩潰,或者如果我輸入100,它會產生“一百二百”。 有人可以幫我修復我的代碼。

number = input("Enter a value: ")
ones = ["", "one ", "two ","three ", "four", "five ", "six ", "seven ", 
"eight ", "nine "]
teens = ["ten ", "eleven ", "twelve ", "thirteen ", "fourteen ", "fifteen ", 
"sixteen ", "seventeen ", "eighteen ", "nineteen "]
decades = ["", "twenty ", "thirty ", "forty ", "fifty ", "sixty ", "seventy 
", "eighty ", "ninety "]
hundreds = ["", "one hundred ", "two hundred ", "three hundred ", "four 
hundred ", "five hundred", "six hundred ", "seven hundred", "eight hundred", 
"nine hundred"]

word = ""
change = len(number)

while change > 0:
    if number == "0":
        word ="zero"
        break
    elif change > 1 and number[change - 2] == "1":
        for i in range(0,10):
            if number[change - 1] == str(i):
                word = teens[i] + word
    else:
        for i in range(0,10):
            if number[change - 1] == str(i):
                word = ones[i] + word
    if change > 1:
        for i in range(0,10):
            if number[change - 2] == str(i):
                word = decades[i] + word
    if change > 2:
        for i in range(0,10):
            if number[change - 3] == str(i):
                word = hundreds[i] + word
    change = change - 3
print(word)

這應該工作: word2number

還有他們文檔中的一個示例: print(w2n.word_to_num('one hundred thirty-five'))

您錯過了幾十個“七十”和“八十”之間的逗號。 您必須將數十年更改為以下內容:

decades = ["", "twenty ", "thirty ", "forty ", "fifty ", "sixty ", "seventy", "eighty ", "ninety"]

在hunderds列表中也存在相同的錯誤。 使用此新列表:

hundreds = ["", "one hundred ", "two hundred ", "three hundred ", "four hundred ", "five hundred", "six hundred ", "seven hundred", "eight hundred", "nine hundred"]

但是,您的實現有很多錯誤。

就是這個if語句將起作用(請注意,這是使它起作用所需的全部):

if len(number)==1:
   print(ones[int(number)])
elif len(number)==2 and number[0]=='1':
   print(teens[int(number[-1])])
elif len(number)==2 and number[0]!='1':
   print(decades[int(number[0])-1])
elif len(number)==3:
   print(hundreds[int(number[0])])

請注意,必須在decadeshundreds decades添加逗號,因此請復制以下內容,然后替換為剪貼板:

decades = ["", "twenty ", "thirty ", "forty ", "fifty ", "sixty ", "seventy", "eighty ", "ninety "]
hundreds = ["", "one hundred ", "two hundred ", "three hundred ", "four hundred ", "five hundred", "six hundred ", "seven hundred", "eight hundred", 

我認為,為了使您的示例正常工作,您只需要確保每個change位都在訪問列表中的正確值即可。 在您的decades列表中情況並非如此,您錯過了為青少年正確輸入的空白​​字符串。

因此,為了使您的代碼正常工作,只需更改:

decades = ["", "twenty ", "thirty ", "forty ", "fifty ", "sixty ", "seventy", "eighty ", "ninety "]

對此:

decades = ["", "", "twenty ", "thirty ", "forty ", "fifty ", "sixty ", "seventy", "eighty ", "ninety "]

對於此實現,列表中應始終包含10個元素。 例如,幾十年來,即使不使用它,也應該有一些字符串表示10-20之間的值,因為否則數組的索引將是錯誤的。

這段代碼仍然有很多錯誤。 嘗試這個。

number = input("Enter a value: ")
ones = ["", "one ", "two ","three ", "four", "five ", "six ", "seven ", "eight ", "nine "]
teens = ["ten ", "eleven ", "twelve ", "thirteen ", "fourteen ", "fifteen ", "sixteen ", "seventeen ", "eighteen ", "nineteen "]
decades = ["", "onety", "twenty ", "thirty ", "forty ", "fifty ", "sixty ", "seventy ", "eighty ", "ninety "]
hundreds = ["", "one hundred ", "two hundred ", "three hundred ", "four hundred ", "five hundred", "six hundred ", "seven hundred", "eight hundred", "nine hundred"]

word = ""
change = len(number)

while change > 0:
    if number == "0":
        word ="zero"
        break
    elif change > 1 and number[change - 2] == "1":
        for i in range(0,10):
            if number[change - 1] == str(i):
                word = teens[i] + word
        if change == 2:
            break
    else:
        for i in range(0,10):
            if number[change - 1] == str(i):
                word = ones[i] + word
    if change > 1 and number[change-2]!="1":
        for i in range(0,10):
            if number[change - 2] == str(i):
                word = decades[i] + word
    if change > 2:
        for i in range(0,10):
            if number[change - 3] == str(i):
                word = hundreds[i] + word
    change = change - 3
print(word)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM