多选题,
第一想法是建一个列表,每次都加在之前的记录上,但是初始化比较困难
所以选择列表,每个题每个选项的列表形式作为键
如何将所有的错误选项选出来呢,使用遍历所有选项,把正确选项和提交的答案重合的去除
#记录数据使用字典列表//改用字典,元组做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]))
网友评论