当前位置: 高中信息技术 / 综合题
  • 1. (2021高二上·浙江期中) 某阅卷系统设计如下:

    读取学生答案文件后和标准答案进行对照并判分,题型分为单选、多选和填空。

    单选阅卷规则:和标准答案一致得全部分数,错选或不选不给分

    多选阅卷规则:和标准答案一致得全部分数,漏选给一半分数,错选或不选不给分

    填空阅卷规则:标准答案表中允许有多种答案存在。学生的答案在标准答案中存在,得全部分数,不存在或未填不给分。

    例如"学生答案.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. (1) 如果学生的答案数据为'王五|A|C|AD|ACD|string|i=0',则输出的结果是
    2. (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( )

微信扫码预览、分享更方便