python输入数字得到英文

#输入的数字只有两位数并且没有错误
#用if和if-else
#举例:
输入10
输出ten
输入38
输出thirty-eight(需要有-)
输入99
输出ninety-nine

dic = {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',}

number = int(input(">>>"))
if number <= 20:
    print(dic[number])
else:
    x, y = divmod(number, 10)
    print(dic[x*10] + '-' + dic[y])

def int_to_en(num):
    d = { 0 : 'zero', 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' }
    k = 1000
    m = k * 1000
    b = m * 1000
    t = b * 1000

    assert(0 <= num)

    if (num < 20):
        return d[num]

    if (num < 100):
        if num % 10 == 0: return d[num]
        else: return d[num // 10 * 10] + '-' + d[num % 10]

    if (num < k):
        if num % 100 == 0: return d[num // 100] + ' hundred'
        else: return d[num // 100] + ' hundred and ' + int_to_en(num % 100)

    if (num < m):
        if num % k == 0: return int_to_en(num // k) + ' thousand'
        else: return int_to_en(num // k) + ' thousand, ' + int_to_en(num % k)

    if (num < b):
        if (num % m) == 0: return int_to_en(num // m) + ' million'
        else: return int_to_en(num // m) + ' million, ' + int_to_en(num % m)

    if (num < t):
        if (num % b) == 0: return int_to_en(num // b) + ' billion'
        else: return int_to_en(num // b) + ' billion, ' + int_to_en(num % b)

    if (num % t == 0): return int_to_en(num // t) + ' trillion'
    else: return int_to_en(num // t) + ' trillion, ' + int_to_en(num % t)

    raise AssertionError('num is too large: %s' % str(num))


while True:
    nums = eval(input())
    print(int_to_en(nums))

NUMBER_CONSTANT = {0:"zero ", 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" };
IN_HUNDRED_CONSTANT = {2:"twenty", 3:"thirty", 4:"forty", 5:"fifty", 6:"sixty", 7:"seventy", 8:"eighty", 9:"ninety"}
def translateNumberToEnglish(number):
    if str(number).isnumeric():
        if str(number)[0] == '0' and len(str(number)) > 1:
            return translateNumberToEnglish(int(number[1:]));
        if int(number) < 20:
            return NUMBER_CONSTANT[int(number)];
        elif int(number) < 100:
            if str(number)[1] == '0':
                return IN_HUNDRED_CONSTANT[int(str(number)[0])];
            else:
                return IN_HUNDRED_CONSTANT[int(str(number)[0])] + "-" + NUMBER_CONSTANT[int(str(number)[1])];
        else:
            return "数值超过99了"

代码如下,如有帮助请点击一下采纳谢谢:

num=input("请输入一个整数:\n")
def less_Hundred(num):
    L1 = ["zero","one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"]
    L2 = ["eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen",
          "twenty"]
    L3 = ["thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"]
    if int(num)<=10:
        return L1[int(num)]
    elif 10<int(num)<=20:
        return L2[int(num)%10-1]
    elif 20<int(num)<30:
        return L2[-1]+" "+L1[int(num)%10]
    elif 30<=int(num)<100:
        return L3[int(num)//10-3]+"-"+L1[int(num)%10]
print(less_Hundred(num))

凑个热闹,换个思路:

nums = [
    ['','ten'],
    ['one','eleven'],
    ['two','twelve','twenty'],
    ['three','thirteen','thirty'],
    ['four','fourteen','forty'],
    ['five','fifteen','fifty'],
    ['six','sixteen','sixty'],
    ['seven','seventeen','seventy'],
    ['eight','eighteen','eighty'],
    ['nine','nineteen','ninety'],
]

num = input()
if num[0] == '1':
    res = nums[int(num[1])][1]
else:
    res = nums[int(num[0])][2]+'-'+nums[int(num[1])][0]

print(res.rstrip('-'))