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