题解 | #学英语#

学英语

https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc

import sys

dic_1 = {'1':'one', '2':'two', '3':'three', '4':'four', '5':'five', '6':'six', '7':'seven', '8':'eight', '9':'nine'}
dic_2_1 = {'0':'ten', '1':'eleven', '2':'twelve', '3':'thirteen', '4':'fourteen', '5':'fifteen', '6':'sixteen', '7':'seventeen', '8':'eighteen', '9':'nineteen'}
dic_2_2 ={'2':'twenty', '3':'thirty', '4':'forty', '5':'fifty', '6':'sixty', '7':'seventy', '8':'eighty', '9':'ninety'}

#这里定义一个读三位数的函数
def read_turn(num):
    word = {}
    if num[0] != '0': #百位不是0
        word[0] = dic_1[num[0]] +' hundred'
        if num[1] == '0':
            if num[2] == '0':
                word[1] = ''
                word[2] = ''
            else:
                word[1] = ''
                word[2] = ' ' + 'and' + ' ' + dic_1[num[2]]
        elif num[1] == '1':
            word[1] = ''
            word[2] = ' ' + 'and' + ' ' + dic_2_1[num[2]]
        else:
            word[1] = ' ' + 'and' + ' ' + dic_2_2[num[1]]
            if num[2] == '0':
                word[2] = ''
            else:
                word[2] = ' ' + dic_1[num[2]]
    else: #百位是0
        word[0] = ''
        if num[1] == '0':
            if num[2] == '0':
                word[1] = ''
                word[2] = ''
            else:
                word[1] = ''
                word[2] = dic_1[num[2]]
        elif num[1] == '1':
            word[1] = ''
            word[2] = dic_2_1[num[2]]
        else:
            word[1] = dic_2_2[num[1]]
            if num[2] == '0':
                word[2] = ''
            else:
                word[2] = ' ' + dic_1[num[2]]
    
    sentence = word[0] + word[1] + word[2] + ' '
    return sentence

n = input()
list_n = []
read_out = ''
#从右侧每三位一分割,我不妨先把它补零变成长为3的整数倍
if len(n) % 3 != 0:
    n = '0' * (3 - (len(n) % 3)) + n

for i in range(0,len(n),3):
    list_n.append(n[i:i+3])

if len(list_n) == 4:
    read_out = read_turn(list_n[0]) + 'billion ' + read_turn(list_n[1]) + 'million ' + read_turn(list_n[2]) + 'thousand ' + read_turn(list_n[3])
elif len(list_n) == 3:
    read_out = read_turn(list_n[0]) + 'million ' + read_turn(list_n[1]) + 'thousand ' + read_turn(list_n[2])
elif len(list_n) == 2:
    read_out = read_turn(list_n[0]) + 'thousand ' + read_turn(list_n[1])
elif len(list_n) == 1:
    read_out = read_turn(list_n[0])

print(read_out)

全部评论
读三位数这个函数内部if判断太多了,机考考这种题我应该会出很多细节问题
点赞 回复 分享
发布于 2024-01-26 21:30 河北

相关推荐

点赞 评论 收藏
分享
04-18 15:58
已编辑
门头沟学院 设计
kaoyu:这一看就不是计算机的,怎么还有个排斥洗碗?
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务