组卷题库 > 高中信息技术试卷库

浙江省北斗星盟2022年12月高三信息技术联考试题

作者UID:7189882
日期: 2024-05-04
高考模拟
选择题(本大题共12小题,每小题2分,共24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、错选、多选均不得分)
非选择题(本大题共3小题,8+10+8,共26分)
知识竞赛结束后,小明从信息系统中导出参赛学生的成绩,存储在“知识竞赛.xlsx”文件中,如图a所示,并编写Python程序,按总分降序排序,分别输入一二三等奖的获奖比例,计算获奖人数和分数线,程序运行结果如图b所示。由于同分人数较多,计算奖次时按最接近规定比例的人数划定分数线,若按两个相邻分数线划定的人数与规定比例的人数同样接近,则取较低的分数线。例如:总人数100人,应有10人获一等奖,若98分及以上有9人,97分及以上有15人,则一等奖分数线为98分;若98分及以上有9人,97分及以上有11人,则一等奖分数线为97分。Python程序如下,请回答下列问题。

图 a

图 b

def find(now,step):

    i=now

    while score[i][2]==score[now][2]:

         ① 

        return i

import pandas as pd

df=pd.read_excel ("知识竞赛.xlsx")

df= ②  

score=df.values    #二维数组 score 存储所有参赛学生的考号、班级和总分,按总分降序排列

n=len(score)

prize=["一等奖","二等奖","三等奖"]

print("总人数:"+str(n))

s=input("请分别输入一二三等奖的比例: ")

percent=list(map(float,s.split(",")))  #一二三等奖比例转换成实数存储在列表 percent 中 nums=[0,0,0]

nums[0]=round(  ③  )

for i in range(1,3):

    nums[i]=nums[i-1]+round(n*percent[i])

pre=0;res=[""]*n     #res 存储学生的奖次

for i in range(3):

    now=nums[i]-1

    k1=find(now,-1)

    k2=find(now,1)

    if k2-now<=now-k1:

    now=k2-1

    line=score[k2-1][2]

else:

    now=k1

    line=score[k1][2]

print(prize[i],"人数:",now-pre+1,"分数线:",line)

for j in range(pre,now+1):

    res[j]=prize[i]

  ④ 

小明所在的班级共有 20 名男生,要参加学校举办的拔河比赛,赛前根据体重分成 AB 两组进行训练,要求每组 10 人, 且每组男生的体重之和尽量接近。小明设计了如下算法:

①初步分组:将所有男生按体重从高到低排序,并以 ABAB…进行初步分组;

②计算体重差: 计算每组对应两个男生的体重差;

③交换学生:按体重差从高到低判断是否交换学生。

例如 20 名男生的体重(单位: kg)从高到低为:

95, 93, 93, 90, 90, 90, 84, 83, 83, 78, 77, 75, 74, 69, 64, 61, 61, 60, 56, 55。

步骤

体重

体重和

初步分组

A 组

95

93

90

84

83

77

74

64

61

56

777

B 组

93

90

90

83

78

75

69

61

60

55

754

体重差

2

3

0

1

5

2

5

3

1

1

23

交换学生

 

最终分组

A 组

95

93

90

83

78

77

69

64

61

56

766

B 组

93

90

90

84

83

75

74

61

60

55

765

小明按照以上算法编写Python程序如下,请在划线处填入合适的代码。

def group(student):    #初步分组

    a=[];b=[]

    i=0

    while i<len(student):

        a.append(student[i])

        b.append(student[i+1])

       

    return a,b

def cal_diff(a,b):     #计算体重差并降序排序

    d=[]

    for i in range(len(a)):

        d.append([i,a[i]-b[i]])

        for i in range(len(d)-1):

            for j in range(0,len(d)-i-1):

                if  :

                    d[j],d[j+1]=d[j+1],d[j]

        return d

def change(d,a,b):     #标记是否交换

    k=(sum(a)-sum(b))//2

    f=[0]*len(d)

    ssum=0

    for i in range(len(d)):

        ssum+=d[i][1]

        if ssum>k:

            ssum-=d[i][1]

        else:

           

            if ssum==k:

                break

    return f

student=[95, 93, 93, 90, 90, 90, 84, 83, 83, 78, 77, 75, 74, 69, 64, 61, 61, 60, 56, 55]

qA,qB=group(student)

print("初步分组后 A 组体重: ",qA,"和为:",sum(qA))

print("初步分组后 B 组体重: ",qB,"和为:",sum(qB))

diff=cal_diff(qA,qB)

flag=

for i in range(len(flag)):    #交换

    if flag[i]==1:

        qA[i],qB[i]=qB[i],qA[i]

print("交换后 A 组体重:",qA,"和为:",sum(qA))

print("交换后 B 组体重:",qB,"和为: ",sum(qB))

试卷列表
教育网站链接