当前位置: 高中信息技术 / 综合题
  • 1. (2023高二下·浙江期中) 某年级要选出3位同学参加市趣味科学竞赛,现有8位同学报名参赛。参赛选手进行展示后由大众评委投票产生前三名。投票结果存储在“vote.txt”文件中,如图a所示。其中choose列的数据为大众评委的投票对象,均以选手代码显示。

    选手名称与选手代码的对应关系如下表:

    选手名称

    选手 A

    选手 B

    选手 C

    选手 D

    选手 E

    选手 F

    选手 G

    选手 H

    选手代码

    0

    1

    2

    3

    4

    5

    6

    7

    小明用Python编写了一个统计得票数的程序,用于检查每位大众评委的投票是否有效(每人投3票且不重),并对有效结果进行统计,按照得票数从高到低输出投票结果,如图b所示。

    若存在并列且前三名总人数超过3人,则输出所有满足条件的选手,并通过随机抽奖形式在末位同分同学中抽取参赛学生,如图c所示,在选手C、E、H中抽取一位同学作为第三名。

    图a

    图b

    图 c

    1. (1) 根据题意,若评委人数为7人,投票数据分别为“142,565,620,361,203,604,136”,则入选人员不可能      (单选, 填字母) 。
      A . 选手 A,选手 B,选手 G B . 选手 C,选手 D,选手 G C . 选手 A,选手 C,选手 D D . 选手 B,选手 D,选手 G
    2. (2) 实现上述功能的代码如下, 请在划线处填入合适的代码。

      from random import randint

      def check(x):    #检测投票是否有效

      flag=False

      sum,checklist=0,[0]*8

      if len(x)==3:

      for i in range(3):

      if "0"<=x[i]<="7":

      checklist[int(x[i])]=1

      for i in range(8):

      sum+=checklist[i]

      if  :

      flag=True

      return flag

      dict={0:"选手 A",1:"选手 B",2:"选手 C",3:"选手 D",4:"选手 E",5:"选手 F",6:"选手 G",7:"选手 H"}

      f=open("vote.txt","r")

      line=f.readline()    #第一行为列标题,读取两次跳过该行

      line=f.readline()

      count=[0]*8

      while line:

      linelist=line.split(",")        #将字符串按逗号分隔为列表

      if check(s):

      for i in range(3):

      count[int(s[i])]+=1

      line=f.readline()

      f.close()

      a=[]

      for i in range(8):

      a.append([dict[i],count[i]])

      #将列表 a 按照选手票数从高到低排序并输出,代码略

      m=3    #入选人数

      b=[a[0]] ;k=1;st=0

      for i in range(1,len(a)):

      if  :

      break

      if a[i][1]!=a[i-1][1]:

      st=i

      k+=1

      b.append(a[i])

      print("满足条件的选手:")

      for i in range(k):

      print(b[i])      #输出满足票数前 m 条件的参赛选手

      #输出最终入选人员

      print("最终入选人员:")

      for i in range(st):

      print(b[i])

      #末位同分的同学, 用抽奖的方式确定入选人员

      flag = [0] * k

      while d>0:

      lucky=randint(st,k-1)

      if flag[lucky]==0:

      print(b[lucky])

      flag[lucky]= 1

      d-=1

      #在最后同分的同学中随机抽取

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