pat 乙类 1095 python

注意一、要求输出类型为1的指令时,查询为空则输出NA。即if len(p) == 0:print("NA"),只用if find[1] not in level:print("NA")只能判断指令是否是"A"、"B"、"T",不能用来判断是否是空集,测试点1、2会报错。类型为2或3时,可以使用if find[1] not in room_num:print("NA")或if find[1] not in date:print("NA"),因为在分类时已经排除没有的情况。类型1也可以在开始建立空字典,排除没有的情况。

注意二、使用sort()方法或sorted()函数来排序时,降序符号"-"不能对字符串使用,只能对整型使用

偶尔通过。创建包含"A"、"B"、"T"的字典

n, m = map(int, input().split())
level = {"A": [], "B": [], "T": []}
room_num = {}
date = {}
for i in range(n):
    num, score = input().split()
    score = int(score)
    
    if num[0] in level:
        level[num[0]].append([num, score])

    room = num[1:4]
    if room in room_num:
        room_num[room][0] += 1
        room_num[room][1] += score
    else:
        room_num[room] = [1, score]
    
    t = num[4:10]
    if t not in date:
        date[t] = {}
    if room not in date[t]:
        date[t][room] = 1
    else:
        date[t][room] += 1

for j in range(m):
    find = input().split()
    print("Case %d:" % (j + 1), find[0], find[1])
    
    if find[0] == "1":
        if find[1] in level:                          % 判断指令是否是A、B、T
            p = level[find[1]]
            if len(p) != 0:                           % 判断是否为空集
                p.sort(key=lambda x:(-x[1], x[0]))    % "-" 只能对整型使用
                for i in p:
                    print(*i, sep=" ")
            else:
                print("NA")
        else:
            print("NA")

    elif find[0] == "2":
        if find[1] not in room_num:
            print("NA")
        else:
            print(*room_num[find[1]], sep=" ")

    elif find[0] == "3":
        if find[1] in date:
            s = date[find[1]]
            s = sorted(s.items(), key=lambda x: (-x[1], x[0]))
            for i in s:
                print(*i, sep=" ")
        else:
            print("NA")
    else:
        print("NA")

偶尔通过。创建三个空字典

n, m = map(int, input().split())
level = {}
room_num = {}
date = {}
for i in range(n):
    num, score = input().split()
    score = int(score)

    if num[0] in level:
        level[num[0]].append([num, score])
    else:
        level[num[0]] = []
        level[num[0]].append([num, score])

    room = num[1:4]
    if room in room_num:
        room_num[room][0] += 1
        room_num[room][1] += score
    else:
        room_num[room] = [1, score]

    t = num[4:10]
    if t not in date:
        date[t] = {}
    if room not in date[t]:
        date[t][room] = 1
    else:
        date[t][room] += 1

for j in range(m):
    find = input().split()
    print("Case %d:" % (j + 1), find[0], find[1])

    if find[0] == "1":
        if find[1] in level:
            p = level[find[1]]
            p.sort(key=lambda x:(-x[1], x[0]))
            for i in p:
                print(*i, sep=" ")
        else:
            print("NA")

    elif find[0] == "2":
        if find[1] not in room_num:
            print("NA")
        else:
            print(*room_num[find[1]], sep=" ")

    elif find[0] == "3":
        if find[1] in date:
            s = date[find[1]]
            s = sorted(s.items(), key=lambda x: (-x[1], x[0]))
            for i in s:
                print(*i, sep=" ")
        else:
            print("NA")
    else:
        print("NA")

测试点3、4超时

n, m = map(int, input().split())
level = {"A": {}, "B": {}, "T": {}}
room_num = {}
date = {}
for i in range(n):
    num, score = input().split()
    if num[0] in level:
        level[num[0]][num] = score

    room = num[1:4]
    if num[1:4] in room_num:
        room_num[num[1:4]][0] += 1
        room_num[num[1:4]][1] += int(score)
    else:
        room_num[num[1:4]] = [1, int(score)]
    t = num[4:10]
    if t not in date:
        date[t] = {}
    if room not in date[t]:
        date[t][room] = 1
    else:
        date[t][room] += 1

for j in range(m):
    find = input().split()
    print("Case %d:" % (j + 1), find[0], find[1])
    if find[0] == "1":
        if find[1] in level:
            p = level[find[1]]
            if len(p) != 0:
                p = sorted(p.items(),key=lambda x:(-int(x[1]), x[0]))
                for i in p:
                    print(*i, sep=" ")
            else:
                print("NA")
        else:
            print("NA")

    elif find[0] == "2":
        if find[1] not in room_num:
            print("NA")
        else:
            print(*room_num[find[1]], sep=" ")

    elif find[0] == "3":
        if find[1] in date:
            s = date[find[1]]
            s = sorted(s.items(), key=lambda x: (-x[1], x[0]))
            for i in s:
                print(*i, sep=" ")
        else:
            print("NA")
    else:
        print("NA")

测试点1,2错误,3、4超时

n, m = map(int, input().split())
stu = {}
for i in range(n):
    num, score = input().split()
    stu[num] = score
for j in range(m):
    find = input().split()
    if find[0] == "1" and find[1] in ["A", "B", "T"]:
        result = []
        for k in stu:
            if find[1] == k[0]:
                result.append([k, stu[k]])
        result.sort(key=lambda x: (-int(x[1]), x[0]))
        print("Case %d:" % (j + 1), find[0], find[1])
        for i in result:
            print(*i, sep=" ")
    elif find[0] == "2":
        count = 0
        s = 0
        for k in stu:
            if find[1] == k[1:4]:
                s += int(stu[k])
                count += 1
        print("Case %d:" % (j + 1), find[0], find[1])
        if count == 0:
            print("NA")
        else:
            print(count, s)
    elif find[0] == "3":
        result = {}
        for k in stu:
            if find[1] == k[4:10]:
                if k[1:4] in result:
                    result[k[1:4]] += 1
                else:
                    result[k[1:4]] = 1
        result = sorted(result.items(), key=lambda x: (-x[1], x[0]))
        print("Case %d:" % (j + 1), find[0], find[1])
        if len(result) == 0:
            print("NA")
        else:
            for i in result:
                print(*i, sep=" ")
    else:
        rint("Case %d:" % (j + 1), find[0], find[1])
        print("NA")

测试点1、2错误,3、4超时

n, m = map(int, input().split())
stu = {}
level_A = []
level_B = []
level_T = []
room_num = {}
for i in range(n):
    num, score = input().split()
    stu[num] = score
    if num[0] == "A":
        level_A.append([num,score])
    elif num[0] == "B":
        level_B.append([num,score])
    elif num[0] == "T":
        level_T.append([num,score])
    if num[1:4] in room_num:
        room_num[num[1:4]][0] += 1
        room_num[num[1:4]][1] += int(score)
    else:
        room_num[num[1:4]] = [1,int(score)]

for j in range(m):
    find = input().split()
    print("Case %d:" % (j + 1), find[0], find[1])
    if find[0] == "1":
        if find[1] == "A":
            level_A.sort(key=lambda x:(-int(x[1]),x[0]))
            for i in level_A:
                print(*i, sep=" ")
        elif find[1] == "B":
            level_B.sort(key=lambda x: (-int(x[1]), x[0]))
            for i in level_B:
                print(*i, sep=" ")
        elif find[1] == "T":
            level_T.sort(key=lambda x: (-int(x[1]), x[0]))
            for i in level_T:
                print(*i, sep=" ")
        else:
            print("NA")

    elif find[0] == "2":
        if find[1] not in room_num:
            print("NA")
        else:
            print(*room_num[find[1]],sep=" ")

    elif find[0] == "3":
        result = {}
        for k in stu:
            if find[1] == k[4:10]:
                if k[1:4] in result:
                    result[k[1:4]] += 1
                else:
                    result[k[1:4]] = 1
        result = sorted(result.items(), key=lambda x: (-x[1], x[0]))
        if len(result) == 0:
            print("NA")
        else:
            for i in result:
                print(*i, sep=" ")
    else:
        print("NA")



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值