Python刷题日记--数的读法

基础练习 数的读法
时间限制: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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

quzah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值