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。

输出格式

  输出时间时刻的英文。

解题思路:

难点在于每个时刻的表达。

本代码相对保守,不知道有没有更简单的方法,代码如下:

H,M=list(map(int,input().split()))
a=str(M)
b=str(H)
time = {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 '}
if M in range(0,20):
    a=time[M]
if M in (20,30,40,50) :
    a=time[M]
if M > 20 and M < 30:
    a=time[20]+time[M%10]
if M==0:
   a="o'clock"
if M > 30 and M < 40:
    a=time[30]+time[M%10]
if M > 40 and M < 50:
    a=time[40]+time[M%10]
if M > 50 and M < 60:
    a=time[50]+time[M%10]
if H in range(0,20):
    b=time[H]
if H> 20 and H < 24:
    b=time[20]+time[H%10]
if H==0:
    print("zero"+a)
else:
    print(b+a)

结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值