基础练习 数的读法
时间限制:1.0s 内存限制:512.0MB
问题描述 Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿。
比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的。
所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法:
十二亿三千四百五十六万七千零九
用汉语拼音表示为
shi er yi san qian si bai wu shi liu wan qi qian ling jiu
这样他只需要照着念就可以了。
你的任务是帮他设计这样一个系统:给定一个阿拉伯数字串,你帮他按照中文读写的规范转为汉语拼音字串,相邻的两个音节用一个空格符格开。
注意必须严格按照规范,比如说“10010”读作“yi wan ling yi shi”而不是“yi wan ling shi”,“100000”读作“shi wan”而不是“yi shi wan”,“2000”读作“er qian”而不是“liang qian”。输入格式 有一个数字串,数值大小不超过2,000,000,000。输出格式 是一个由小写英文字母,逗号和空格组成的字符串,表示该数的英文读法。样例输入1234567009样例输出shi er yi san qian si bai wu shi liu wan qi qian ling jiu
arr1 = ["ling ", "yi ", "er ", "san ", "si ", "wu ", "liu ", "qi ", "ba ", "jiu "]
arr2 = ["", "shi ", "bai ", "qian "]
arr3 = ["wan ", "yi "]
def get_four_read(inp_list):
res_str = ""
if (inp_list == [0, 0, 0, 0]):
return ""
for inx, i in enumerate(inp_list):
res_str += arr1[i] + arr2[len(inp_list) - 1 - inx]
if (res_str.find("ling qian") != -1):
res_str = res_str.replace("ling qian ", "ling ")
if (res_str.find("ling bai") != -1):
res_str = res_str.replace("ling bai ", "ling ")
if (res_str.find("ling shi") != -1):
res_str = res_str.replace("ling shi ", "ling ")
while (res_str.endswith("ling ")):
res_str = res_str[:-5]
return res_str
if __name__ == '__main__':
number = input()
number_list = [int(i) for i in list(number)]
res_str = ""
if (4 < len(number_list) < 9):
res_str += get_four_read(number_list[:len(number) - 4])
res_str += arr3[0]
elif (len(number_list) > 9):
res_str += get_four_read(number_list[:len(number) - 8])
res_str += arr3[1]
if (number_list[len(number) - 8:len(number) - 4] != [0, 0, 0, 0]):
res_str += get_four_read(number_list[len(number) - 8:len(number) - 4])
if (number_list[:-4] != [0, 0, 0, 0]):
res_str += get_four_read(number_list[-4:])
while (res_str.find("ling ling") != -1):
res_str = res_str.replace("ling ling", "ling")
if (res_str.find("qian bai") != -1):
res_str = res_str.replace("qian bai", "ling")
if (res_str.startswith("yi shi")):
res_str = res_str[3:]
print(res_str)
基础练习 数的读法时间限制:1.0s 内存限制:512.0MB问题描述 Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿。 比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的。 所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法: 十二亿三千四百五十六万七千零九 用汉语拼音表示为 shi er yi san..