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

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

“纠错”参考:https://blog.csdn.net/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、“非零返回”问题:一般是有语法错误或者代码有不规范的地方(这是一个坑点,不过由于代码在本地是用记事本写的所以可能存在一些格式上的不规范,有语法错误应该编译的时候会发现)

上一篇:Java 8 日期类的使用


下一篇:php – 如何获取小时和最近的小时