2021-04-13pta经验

2021-04-15  本文已影响0人  Cipolee

多选题,
第一想法是建一个列表,每次都加在之前的记录上,但是初始化比较困难
所以选择列表,每个题每个选项的列表形式作为键
如何将所有的错误选项选出来呢,使用遍历所有选项,把正确选项和提交的答案重合的去除

#记录数据使用字典列表//改用字典,元组做key
#输出分数
#判断是否有错误选项,并输出错的最多的选项

import re

#list_all_false=[]

def judge(a,b,index):
    '''
    #dict_f={}
    if index==2:
            print(a,b)
    flag=True
    for i in a:
        if i not  b:
            dict_f[i]=dict_f.get(i,0)+1
            flag=False
    list_all_false.append(dict_f)
    '''
    #ans=0
    for i in l:
        if i in a and i in b:
            a.remove(i)
            b.remove(i)
    for i in a:
        dict_f[(index,i)]=dict_f.get((index,i),0)+1
    for i in b:
        dict_f[(index,i)]=dict_f.get((index,i),0)+1
    if not a and not b:
        return int(select_information[index][0])
    if not a and b:
        return int(select_information[index][0])/2
    return 0
    #print("{:.1f}".format(ans))
dict_f,select_information={},[]
nums,numq=map(int,input().split())
l=['a','b','c','d','e']
for  _ in range(numq):
    select_information.append(input().split())
for _ in range(nums):
    regex=re.compile('\((.*?)\)')
    list_stu_sele=regex.findall(input())
    list_stu_sele=[i.split() for i in list_stu_sele]
    ans=0
    for i in range(numq):
        ans+=judge(list_stu_sele[i][1:],select_information[i][3:],i)
    print("{:.1f}".format(ans))
if len(dict_f)==0:
    print("Too simple")
else:
    #dict_f=sorted(dict_f.items(),key=lambda x:x[1],reverse=True)
    #卡测试点2
    #print(type(dict_f),dict_f)
    list_ans,max_=[],max(dict_f.values())
    for item in dict_f.items():
        if item[1]==max_:
            list_ans.append([item[0][0]+1,item[0][1]])
    list_ans=sorted(list_ans,key=lambda x:x[1])
    list_ans=sorted(list_ans,key=lambda x:x[0])
    for i in list_ans:
        print("{} {}-{}".format(max_,i[0],i[1]))
上一篇 下一篇

猜你喜欢

热点阅读