蓝桥杯 基础练习 vip题库 — 数的读法(python)

题目

在这里插入图片描述

代码

def get_num(num):
    numbers = {
               1: 'yi', 2: 'er', 3: 'san', 4: 'si', 5: 'wu',
               6: 'liu', 7: 'qi', 8: 'ba', 9: 'jiu', 0: 'ling'
              }
    return numbers.get(num)

def get_danwei(danwei):
    danweis = {
               1: 'tmp', 2: 'shi', 3: 'bai', 4: 'qian',
               5: 'wan', 6: 'shi', 7: 'bai', 8: 'qian',
               9: 'yi', 10: 'shi'
               }
    return danweis.get(danwei)


n = list((' '.join(input())).split())
#n.reverse()

out = []
danwei = 1
zero = 0
for i in n[::-1]:
    num = get_num(int(i))
    danwei_out = get_danwei(danwei)
    
    if i == '0':
        if zero != 0:
            zero = 0
            if not danwei == 1 or danwei == 5 or danwei == 9: # 1、5、9时候不输出0
                out.insert(0, num)  # 其余情况输出0
                                    # 因为是倒着来的,所以插入要插到第一个
                danwei += 1
            else:
                out.insert(0, danwei_out)
                out.insert(0, num)
                danwei += 1
        else:
            if danwei == 1 or danwei == 5 or danwei == 9:
                out.insert(0, danwei_out)
                danwei += 1
            else:
                danwei += 1
                continue
    else:
        if danwei == 6:
            if i == '1':
                out.insert(0, danwei_out)
                zero = 1
                danwei += 1
            else:
                out.insert(0, danwei_out)
                out.insert(0, num)
                zero = 1
                danwei += 1
        else:
            out.insert(0, danwei_out)
            out.insert(0, num)
            zero = 1
            danwei += 1

tmp = [i for i,j in enumerate(out) if j == 'tmp']
while len(tmp) != 0:
    out.pop(tmp[0])
    tmp = [i for i,j in enumerate(out) if j == 'tmp']
    
print(' '.join(out))

评测

在这里插入图片描述

对于这题我好像是有啥心得体会的,但是时间过去的太久,已经忘记了。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值