PAT-1014(Pyhton)——福尔摩斯的约会

本文深入探讨了一种用于时间同步的算法实现,通过分析星期、小时和分钟的匹配规则,解决了在特定条件下同步时间的复杂问题。文章详细解释了如何识别并纠正常见的理解误区,如星期标识符、小时和分钟的正确识别,以及格式化的输出标准。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:https://pintia.cn/problem-sets/994805260223102976/problems/994805308755394560

“纠错”参考:https://blog.youkuaiyun.com/coder_wu/article/details/82054618

代码:

alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
for_week = 'ABCDEFG'
for_hour = 'ABCDEFGHIJKLMN'
week = ['MON','TUE','WED','THU','FRI','SAT','SUN']

def func(a,b,c,d):
	i = 0 
	for i in range(0,min(len(a),len(b))):
		if (a[i].isupper())&(a[i]==b[i])&(for_week.find(a[i])!=-1):
			time_day = week[for_week.find(a[i])]
			break
	for j in range(i+1,min(len(a),len(b))):
		if a[j]==b[j]:
			if a[j].isdigit():
				time_hour = str(a[j]).zfill(2)
				break
			if (a[j].isupper())&(for_hour.find(a[j])!=-1):
				time_hour = str(10+alpha.find(a[j]))
				break
	for i in range(0,min(len(c),len(d))):
		if (c[i]==d[i])&(c[i].isalpha()):
			if i<10:
				time_min = str(i).zfill(2)
				break
			else:
				time_min = str(i)
				break
	print(time_day+' '+time_hour+':'+time_min)

if __name__=='__main__':
	inp = []
	for i in range(0,4):
		stg = input()
		inp.append(stg)
	func(inp[0],inp[1],inp[2],inp[3])

总结:

1、理解题意:
    星期:对应位置上大写字母相同,且是大写字母,且只能为'ABCDEFG'中的一个(错误理解:第一个在'ABCDEFG'里且相同的大写字母,没顾及位置)
    小时:对应位置大写字母或数字相同的第二个字符,且大写字母只能是'ABCDEFGHIJKLMN'中的一个(错误理解:第二个相同的大写字母,没顾及数字和字符的位置,还有字母是大写且在一个范围内才行)
    分钟:对应位置相同的字符,包括大写和小写(错误理解:第一个相同的字母,没顾及位置)
    如果犯以上错误,题目给的输入输出样例是可以通过的,提交也会出现一个或两个用例是答案正确的······然后找了很久的错误····
2、填充问题:对于个位数的小时和分钟要填写成0+数字的形式,比如09:08而不是9:8
3、输出:输出星期后有一个空格再输出小时和分钟信息
4、“非零返回”问题:一般是有语法错误或者代码有不规范的地方(这是一个坑点,不过由于代码在本地是用记事本写的所以可能存在一些格式上的不规范,有语法错误应该编译的时候会发现)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值