PTA乙级1014(python3)

PTA乙级1014(python3)

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

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

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

想法:
对于前两个字符串,先找到一个大写字母,这个大写字母还必须在A-G之间(代表星期一到星期日)。
找到大写字母后,从当前位置+1开始找到一对相同的字符(大写)或者0-9数字。
对于后两个字符串,找到相同字符后(必须是字母【无大小写要求】),输出位置即可(因为从0开始的遍历,不用改位置)。
输出时,存在不够位的情况,例如 THU 1:1,这种情况需要前补0变为 THU 01:01。

python3

x1 = input()
x2 = input()
x3 = input()
x4 = input()

# 时间对照
dict_hour = {
    "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
}
# 星期对照
dict_date = {
    "A" : "MON", "B" : "TUE", "C" : "WED", "D" : "THU",
    "E" : "FRI", "F" : "SAT", "G" : "SUN"
}

# 前两对字符串
def chuli(x11, x22, l):
    list_result = []
    a = 0
    for i in range(l):
        if x11[i] == x22[i] and a == 1 and x11[i].isupper():
            if x11[i] in dict_hour.keys():
                list_result.append(str(dict_hour[x11[i]]))  
                return list_result
        elif x11[i] == x22[i] and a == 1 and x11[i].isdigit():
            list_result.append("0" + str(x11[i]))
            return list_result
        if x11[i].isupper() and x22[i].isupper() and a == 0:
            if x11[i] == x22[i]:
                if x11[i] in dict_date.keys():
                    a = 1
                    list_result.append(dict_date[x11[i]])
                
           
                 

# 前两个字符串小时时间点判断(这个函数没有使用,供参考)
def panduan(a):
    if a.isdigit():
        return "0" + str(a)
    else:
        if a in dict_hour.keys():
            return str(dict_hour[a])
        else:
            return "00"


# 后两对字符串
def chuli2(x11, x22, l):
    for i in range(l):
        if x11[i] == x22[i] and x11[i].isalpha():
            if i == 60:
                return "00"
            elif i >= 10:
                return str(i)
            elif i < 10:
                return "0" + str(i)
    return "00"


# 字符串长度判断
def the_len(x1, x2):
    if len(x1) >= len(x2):
        return len(x2)
    elif len(x1) < len(x2):
        return len(x1)


# 总运行
l1 = the_len(x1, x2)
l2 = the_len(x3, x4)

result_first = chuli(x1, x2, l1)
result_minute = chuli2(x3, x4, l2)

print(result_first[0] + " " + str(result_first[1]) + ":" + str(result_minute))

结语
最让人膈应的是读题目像做阅读理解一样,一定要仔细审题!

你可能感兴趣的:(PTA乙级1014(python3))