PTA:Python解答1014 福尔摩斯的约会

1014 福尔摩斯的约会 (20分)

大侦探福尔摩斯接到一张奇怪的字条:我们约会吧!3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间星期四 14:04,因为前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母 D,代表星期四;第 2 对相同的字符是 E ,那是第 5 个英文字母,代表一天里的第 14 个钟头(于是一天的 0 点到 23 点由数字 0 到 9、以及大写字母 AN 表示);后面两字符串第 1 对相同的英文字母 s 出现在第 4 个位置(从 0 开始计数)上,代表第 4 分钟。现给定两对字符串,请帮助福尔摩斯解码得到约会的时间。

输入格式:

输入在 4 行中分别给出 4 个非空、不包含空格、且长度不超过 60 的字符串。

输出格式:

在一行中输出约会的时间,格式为 DAY HH:MM,其中 DAY 是某星期的 3 字符缩写,即 MON 表示星期一,TUE 表示星期二,WED 表示星期三,THU 表示星期四,FRI 表示星期五,SAT 表示星期六,SUN 表示星期日。题目输入保证每个测试存在唯一解。

输入样例:

3485djDkxh4hhGE 
2984akDfkkkkggEdsb 
s&hgsfdk 
d&Hyscvnm

输出样例:

THU 14:04

解题思路:

这个题可以用ASCII码来做,但为了防止对ASCII码加几减几记不清楚或者记错了,我们可以用字符串的isdigit()isupper()函数,来判断字符串是否是数字、是否是大写。

完整代码:

string1=input()
string2=input()
string3=input()
string4=input()
Day={"A":"MON","B":"TUE","C":"WED","D":"THU","E":"FRI","F":"SAT","G":"SUN"}
HH={"0":"00","1":"01","2":"02","3":"03","4":"04","5":"05","6":"06","7":"07","8":"08","9":"09","A":"10","B":"11","C":"12","D":"13","E":"14","F":"15","G":"16","H":"17","I":"18","J":"19","K":"20","L":"21","M":"22","N":"23"}
flag=0
for i in range(len(string1)):
        if string1[i]==string2[i] and string1[i].isupper() and('A'<=string1[i]<='G') and flag==0:
            day=string1[i]
            flag=1
        elif string1[i]==string2[i] and string1[i].isupper() and('A' <= string1[i] <= 'N') and flag==1:
            hh=string1[i]
            break
        elif string1[i]==string2[i] and string1[i].isdigit() and flag==1:
            hh=string1[i]
            break
for i in range(len(string3)):
        if string3[i]==string4[i] and string3[i].isalpha():
            mm=i
string=''
if 0<=mm<=9:
    mm=str(mm)
    mm='0'+mm
else:
    mm=str(mm)
string=Day.get(day,"nothing")+" "+HH.get(hh,"nothing")+":"+mm
print(string)
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注