当前位置: 高中信息技术 / 综合题
  • 1. (2023高二上·杭州期末) 小明使用Python编写了某答题卡中单项选择题的判分程序,该单选题每题2分。扫描答题卡获取选项填涂信息,输入标准答案,程序自动判断并输出分数。具体方法为:一个选项是否被填涂,可以从判断一个像素的颜色开始,像素的填涂情况是通过RGB的值来判断,灰度值低于132的表示该点被填涂;一个信息点64%的像素被填涂,则认为该区域已填涂,返回值为“1”。区域未填涂时返回值为“0”;各选项的编码为:A→“1000”,B→“0100”,C→“0010”,D→“0001”;输入标准答案,程序进行对比并返回结果。答题卡相关信息如图所示。

    1. (1) 某题的标准答案为“C”,该题填涂情况为“0100”,则分数为 分
    2. (2) 实现上述功能的程序如下,请在划线处填入合适的代码。

      from PIL import Image

      #输入起始点坐标(xs,ys),信息点宽度高度(fw, fh),间隔宽度高度(sw ,sh),代码略

      num = 5                              #判分个数

      def bw_judge(R, G, B):      # bw_judge用于判断一个像素的填涂情况

      代码略

      def fill_judge(x, y):            # fill_judge用于判断信息点的填涂情况

          count = 0

          for i in range(x, x + fw + 1):

              for j in range(y, y + fh + 1):

                  R, G, B = pixels[i, j]

                  if bw_judge(R, G, B) = = True:

                      count = count + 1

          if count >=:

              return True

      total_width = fw+ sw

      total_height = fh + sh

      image = Image.open("t2.bmp")

      pixels = image.load()

      number = ""

      bz=[""]*num

      df=0

      bzd=input('请输入标准答案:')

      da={"A":"1000","B":"0100","C":"0010","D":"0001"}

      for i in range(len(bzd)):

          bz[i]=

          for row in range(num):

              for col in range(4):

                 

                  y = ys + total_height * row

                  if fill_judge(x, y) == True :

                      number = number + '1'

                  else:

                      number = number + '0'

              if number = = bz[row]:

                  df+=2

                  number=""

      print("得分为: ",df)

      #分数判定

    【知识点】
    考点
    抱歉,您未登录!暂时无法查看答案与解析,点击登录

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

试题篮

0

备课组卷

备课组卷助手小程序

欢迎加入出卷网推广计划!
返回顶部
您的试题篮还没有试题,
马上添加试题吧!