题目

某阅卷系统设计如下: 读取学生答案文件后和标准答案进行对照并判分,题型分为单选、多选和填空。 单选阅卷规则:和标准答案一致得全部分数,错选或不选不给分 多选阅卷规则:和标准答案一致得全部分数,漏选给一半分数,错选或不选不给分 填空阅卷规则:标准答案表中允许有多种答案存在。学生的答案在标准答案中存在,得全部分数,不存在或未填不给分。 例如"学生答案.txt"内容如下: 张三|A|D|AC|AD|字符串| 李四|A|D|ACD|A|string|i>=0 标准答案: 题号 1 2 3 4 5 6 题型 单选 单选 多选 多选 填空 填空 答案 A D ACD AD 字符串或string i==0或i>=0 分值 2 2 2 2 2 2 程序执行结果: 张三 成绩: 9 分 李四 成绩: 11 分 (1) 如果学生的答案数据为'王五|A|C|AD|ACD|string|i=0',则输出的结果是。 (2) 请在横线处填入合适的代码。 def dx(s1,s2,n):        # 对多选题进行判分   flag =True   for i in s1:     if :       flag =False       break   if s1==s2:     return n   elif :     return 0   else:     return n/2 f=open('学生答案.txt') line=f.readline()       # 按行读取学生答案.txt 文件 bzda=['单选','A',2,'单选','D',2,'多选','ACD',2,'多选','AD',2,'填空',['字符串','string'],2,'填空',['i==0','i>=0'],2] while line:   studa=line.split('|')       # 将字符串以'|'为间隔分割成成多个字符串组成的列表   zf=0   for i in range(len(studa)-1):     p=3*i     if bzda[p]=='单选':       # 对单选题判分       if studa[i+1]==bzda[p+1]:         zf=zf+bzda[p+2]     elif bzda[p]=='多选':        # 对多选题判分       zf=     else:       if studa[i+1]!= '' and studa[i+1] in bzda[p+1]:         zf=zf+bzda[p+2]   print(studa[0],'成绩:',zf,'分')   line=f.readline() # 读取下一行 f.close( ) 答案: 【1】王五 成绩: 5 分 【1】i not in s2 或 not i in s2 或 i in s2 ==False【2】s1=="" or flag==False【3】zf+dx(studa[i+1],bzda[p+1],bzda[p+2])或 zf+dx(studa[i+1],bzda[3*i+1],bzda[3*i+2])
信息技术 试题推荐
最近更新