题目要求:
给定当前的时间,请用英文的读法将它读出来。
时间用时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)
结果: