题解 | #学英语# 一个比较笨的办法
学英语
https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
num1 = ['zero','one','two','three','four','five','six','seven','eight','nine','ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen']
num2 = [0,0,'twenty','thirty','forty','fifty','sixty','seventy','eighty','ninety']
word = []
# 两位数转英文
def n99(n):
    if n >= 0:
        if n < 20:
            word.append(num1[n])
        else:
            word.append(num2[n//10])
            if n%10 != 0:
                word.append(num1[n%10])
        return word
    # 三位数内转英文
def hun(n):
    if n >= 100:#这个必须加,不然后续纯在余数是1 23 这种丢过来,会算出0 hundre
        #先判断百位,并附加单位
        word.append(num1[n//100])
        word.append('hundred')
        if n % 100 != 0:
            word.append('and')
        #剩余两位数应用两位数的判断
            n99(n%100)
    elif n < 20:
        word.append(num1[n])
    else:
        word.append(num2[n // 10])
        if n % 10 != 0:
            word.append(num1[n % 10])
    return word
    #剩余数字转为上述函数内,例如千,可以转
def tha(n):
    if len(str(n)) == 7:
        word.append(num1[n//1000000])
        word.append('million')
        n = n % 1000000
        hun(n//1000)
        word.append('thousand')
        if n % 1000 != 0:
            hun(n%1000)
    elif len(str(n)) == 6:
        hun(n//1000)
        word.append('thousand')
        if n % 1000 != 0:
            hun(n%1000)
    elif len(str(n)) == 5:
        n99(n//1000)
        word.append('thousand')
        if n % 1000 != 0:
            hun(n%1000)
    else:
        word.append(num1[n//1000])
        word.append('thousand')
        if n % 1000 != 0:
            hun(n % 1000)
    return word
num = int(input())
if num < 100:
    n99(num)
elif 100 <= num < 1000:
    hun(num)
else:
    tha(num)
print(' '.join(word))
#悬赏#
