【Python】 PAT 1014 福尔摩斯的约会

问题描述:

在这里插入图片描述

解题思路:

1.第一个,字符相等,而且字符必须是大写字母,并且字符的对应位置也相等,且必须在‘A’~ ‘G’ 之间。(星期几)
2.第二个,字符相等,而且字符必须在‘0’~ ‘9’ 或 ‘A’ ~ ‘N’之间。 (小时)
3.第三个,字符相等, 而且必须是字母。(分钟)

Python 代码:(19分)

a = input()
b = input()
c = input()
d = input()

week = {'A': 'MON', 'B': 'TUE', 'C': 'WED', 'D': 'THU', 'E': 'FRI', 'F': 'SAT', 'G': 'SUN'}

num0to9 = [str(i) for i in range(0, 10)]
charAtoN = [chr(i) for i in range(65, 79)]  # chr()函数用于生成相应ASCII码对应的字符,A/N的ASCII码分别是65/78
num0to23 = ['{:0>2}'.format(str(i)) for i in range(0, 24)]  # 生成00~23,format格式化函数实现个位数的补位

hour = dict(zip(num0to9 + charAtoN, num0to23))  # zip()函数用于将两个列表合并,在hour中,num0to9+letterAtoN为索引,num0to23为对应元素

res = ''  # 保存结果,初始化为空串

for i in range(0, len(a)):  # 星期
    if a[i] in week and a[i] == b[i]:
        res += (week[a[i]] + ' ')
        break  # 检测到星期后加空格,并及时跳出

for j in range(i + 1, len(a)):  # 在上一步检测星期的基础上继续寻找小时,遍历的初始位置=上一步星期的位置+1
    if a[j] in hour and a[j] == b[j]:
        res += hour[a[j]] + ':'
        break

for k in range(0, len(c)):  # 分钟
    if c[k] == d[k] and ('A' <= c[k] <= 'Z' or 'a' <= c[k] <= 'z'):  # 相同字符为字母
        res += '{:0>2}'.format(str(k))  # 格式化字符串,个位数以'0'补位
        break

print(res)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值