2017-10-09 108 views
-1

我只是将此代码转换为一个整数(尽管我实际上并未使用整数)到一个字符串。例如,45 - >四十五。它完美的工作,但代码很长。有什么方法可以缩短它吗?将2位数字转换为python中的字符串

num = input("Enter a two digit number: ") 

first_digit = num[0] 
if first_digit == "2": 
    first_digit_str = "Twenty" 
elif first_digit == "3": 
    first_digit_str = "Thirty" 
elif first_digit == "4": 
    first_digit_str = "Forty" 
elif first_digit == "5": 
    first_digit_str = "Fifty" 
elif first_digit == "6": 
    first_digit_str = "Sixty" 
elif first_digit == "7": 
    first_digit_str = "Seventy" 
elif first_digit == "8": 
    first_digit_str = "Eighty" 
elif first_digit == "9": 
    first_digit_str = "Ninety" 

second_digit = num[1] 
if second_digit == "1": 
    second_digit_str = "-One" 
elif second_digit == "2": 
    second_digit_str = "-Two" 
elif second_digit == "3": 
    second_digit_str = "-Three" 
elif second_digit == "4": 
    second_digit_str = "-Four" 
elif second_digit == "5": 
    second_digit_str = "-Five" 
elif second_digit == "6": 
    second_digit_str = "-Six" 
elif second_digit == "7": 
    second_digit_str = "-Seven" 
elif second_digit == "8": 
    second_digit_str = "-Eight" 
elif second_digit == "9": 
    second_digit_str = "-Nine" 

if first_digit == "1": 
    if second_digit == "1": 
     print("Eleven") 
    elif second_digit == "2": 
     print("Twelve") 
    elif second_digit == "3": 
     print("Thirteen") 
    elif second_digit == "4": 
     print("Fourteen") 
    elif second_digit == "5": 
     print("Fifteen") 
    elif second_digit == "6": 
     print("Sixteen") 
    elif second_digit == "7": 
     print("Seventeen") 
    elif second_digit == "8": 
     print("Eighteen") 
    elif second_digit == "9": 
     print("Nineteen") 

else: 
    print(first_digit_str + second_digit_str) 

k = input("Press enter to close.") 
+0

我很抱歉,我不能设法通常张贴问题。 – Faradrim

+0

你可以将每个数字映射到相应的单词上。 –

+0

你可以适应这个更一般的基于Java的解决方案:https://stackoverflow.com/a/3299672/684776 – mac9416

回答

0

随着n2w库:

安装(从命令行):

pip install n2w 

用法:

import n2w 

num = 45 
num_words = '-'.join(w.capitalize() for w in n2w.convert(num).split()) 

print(num_words) 

的输出:

Forty-Five 

https://github.com/collin5/python-n2w

+0

这是一个很好的答案,但我是Python的新手,并不知道这意味着什么。你能否解释这实际上意味着什么? – Faradrim

+0

@Faradrim,确实得到了“线索” - 你应该按照我发布的链接,然后,按照我的安装说明 – RomanPerekhrest

+0

我道歉,我现在已经看了链接。 – Faradrim

0

可以参考n2w包 用法:

从N2W进口转换

结果=转换(123456)

或ch eck此为detailed ans

+0

我看看n2w是什么,它只是布局,我不会从使用它学到任何东西。好的答案,但是。 – Faradrim

0

这是一个有点短:

num_int = input("Enter a two digit number: ") 

above_19 = { "2":"Twenty", "3":"Thirty", "4": "Forty", "5": "Fifty", 
       "6": "Sixty" , "7": "Seventy", "8": "Eighty", "9": "Ninety"} 

above_10 = { "1":"Eleven", "2":"Twelve", "3":"Thirteen", "4":"Fourteen", 
       "5": "Fifteen" , "6": "Sixteen", "7":"Seventeen", "8": 
       "Eighteen", 9:"Nineteen"} 

digit_2 = { "1": "-One", "2": "-Two", "3":"-Three", "4":"-Four", 
        "5": "-Five" , "6": "-Six", "7": "-Seven", "8":"-Eight", 
        "9": "-Nine"} 

num = str(num_int) 
first_digit = num[0] 
second_digit = num[1] 
if (first_digit == "1"): 
    result = above_10[second_digit] 
else: 
    result = above_19[first_digit]+digit_2[second_digit]