题解 | #学英语#
学英语
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)