题解 | 学英语

num_1_19 = [
    'zero', 'one', 'two','three','four','five',
    'six','seven','eight','nine','ten',
    'eleven','twelve','thirteen','fourteen', 'fifteen', 
    'sixteen','seventeen','eighteen','nineteen'
]

num_20_90 = [
    0, 0, 'twenty', 'thirty', 'forty', 'fifty', 
    'sixty','seventy', 'eighty', 'ninety'
]

pos = [
    'and','hundred','thousand ','million'
]

def three_pos_change(num):
    def fun_under_100(num):
        if num == 0:
            return num_1_19[0]
        if num < 20 :
            return num_1_19[num]
        else:
            ten_num = num // 10
            sig_num = num % 10
            if sig_num == 0 :
                return num_20_90[ten_num]
            else:    
                return num_20_90[ten_num] + " " + num_1_19[sig_num]
    if num < 100 :
        return fun_under_100(num)
    else:
        hun_num = num // 100
        two_pos_num = num % 100
        if two_pos_num == 0:
            return num_1_19[hun_num] + " " + pos[1]
        else:
            return num_1_19[hun_num] + " " + pos[1] + " and "+ fun_under_100(two_pos_num)

# n = 60830
n = int(input())
po3 = n // 1000000
po2 = (n // 1000) % 1000
po1 = n % 1000

if not po3 == 0 :
    num_str = three_pos_change(po3)
    print(num_str,pos[3],end=' ')
if not po2 == 0 :
    num_str = three_pos_change(po2)
    print(num_str,pos[2],end='')
if not po1 == 0 :
    num_str = three_pos_change(po1)
    print(num_str,end='')
print()


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务