PYTHON蓝桥杯——每日一练(简单题)

题目

给定当前的时间,请用英文的读法将它读出来。
  时间用时h和分m表示,在英文的读法中,读一个时间的方法是:
  如果m为0,则将时读出来,然后加上“o'clock”,如3:00读作“three o'clock”。
  如果m不为0,则将时读出来,然后将分读出来,如5:30读作“five thirty”。
  时和分的读法使用的是英文数字的读法,其中0~20读作:
  0:zero, 1: one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight, 9:nine, 10:ten, 11:eleven, 12:twelve, 13:thirteen, 14:fourteen, 15:fifteen, 16:sixteen, 17:seventeen, 18:eighteen, 19:nineteen, 20:twenty。
  30读作thirty,40读作forty,50读作fifty。
  对于大于20小于60的数字,首先读整十的数,然后再加上个位数。如31首先读30再加1的读法,读作“thirty one”。
  按上面的规则21:54读作“twenty one fifty four”,9:07读作“nine seven”,0:15读作“zero fifteen”。

输入格式

输入包含两个非负整数h和m,表示时间的时和分。非零的数字前没有前导0。h小于24,m小于60。

输出格式

输出时间时刻的英文。

解析

 一、递归实现计算

二、用一个列表记录牛数量

三、最后输出数量

代码
shu = []
n,m = map(int,input().split()) #n为小时 m为分钟
shijian = {0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five'
    , 6: 'six', 7: 'seven', 8: 'eight', 9: 'nine', 10: 'ten',
        11: 'eleven', 12: 'twelve', 13: 'thirteen', 14: 'fourteen',
        15: 'fifteen', 16: 'sixteen', 17: 'seventeen', 18: 'eighteen',
        19: 'ninety', 20: 'twenty', 30: 'thirty', 40: 'forty', 50: 'fifty'} #设置字典进行查找对应英语单词
def chazhao(n,m):
    if m!=0:  #先讨论分不为0的情况
        if n>20: #当小时大于20时需要进行讨论
            shu1 = n // 10*10 #获得十位
            shu.append(shu1) #加入列表中
            shu2 = n % 20
            shu.append(shu2)
            if m>20:
                shu3 = m // 10*10
                shu.append(shu3)
                shu4 = m % 10
                shu.append(shu4) #加入列表中或者直接输出结果
                # print(f"{shijian[shu1]} {shijian[shu2]} {shijian[shu3]} {shijian[shu4]}")
            else:
                shu.append(m) #分钟不大于20的情况
                # print(f"{shijian[shu1]} {shijian[shu2]} {shijian[m]}")
        else:
            shu.append(n)  #小时不大于20的情况
            if m>20: #分类讨论和上面类似
                shu3 = m // 10 * 10
                shu.append(shu3)
                shu4 = m % 10
                shu.append(shu4)
            else:
                shu.append(m)
            # print(f"{shijian[n]} {shijian[m]}")
        for i in range(len(shu)): #循环输出列表的元素就为结果
            if shu[i] == 0: #当元素为0就跳过本次循环
                continue
            print(f'{shijian[shu[i]]} ',end = '')
    else: #当分钟为0时的情况
        if n > 20:
            shu1 = n // 10*10
            shu2 = n % 20
            shu.append(shu1)
            shu.append(shu2)
            # print(f"{shijian[shu1]} {shijian[shu2]} o'clock")
        else:
            shu.append(n)
            # print(f"{shijian[n]} o'clock")
        for i in range(len(shu)): #循环输出列表的元素
            if shu[i] == 0:
                continue
            print(f'{shijian[shu[i]]} ',end = '')
        print("o'clock")

chazhao(n,m) #调用函数
i,m = map(int,input().split(':'))
dic = {0:'zero',1:'one',2:'two',3:'three',4:'four',5:'five',6:'six',7:'seven',8:'eight', 9:'nine', 10:'ten', 11:'eleven', 12:'twelve', 13:'thirteen', 14:'fourteen', 15:'fifteen', 16:'sixteen', 17:'seventeen', 18:'eighteen', 19:'nineteen', 20:'twenty',30:'thirty',40:'forty',50:'fifty'}
def shi(n):#判断时
    if n in dic:
        n = dic[n]
        return n
    else:
        ge = dic[n%10]
        shi = dic[n-(n%10)]
        return shi+' '+ge
def fen(n): #判断分
    if n==0:
        return "o'clock" #当分为0时
    elif n in dic:
        n = dic[n]
        return n
    else:
        ge = dic[n%10]
        shi = dic[n-(n%10)]
        return shi+' '+ge
print(shi(i),fen(m))
        
 
运行结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值