某校对高一新生按分班考试总分进行平行分班,具体分班规则如下:将高一年级学生按女生在前、男生在后分别按总分进行降序排序,然后按名次序号进行蛇形分班,例如分成6个班的分班示意如图a所示。
实现上述功能的Python程序如下,程序运行结果如图b所示。回答下列问题:
#从文件15. csv中读取学生分班数据(已按考号升序排序),保存在列表d中
#其中d[0]数据为['考号','姓名','性别','总分'],变量w存储女生人数,代码略
n=len (d) ; bj=[0]*n
for i in range (n):
b j[i]=i
for i in range(1, n+1):
for j in : #①
if d[bj[j]][2]==d[bj[j+1]][2] and int (d[bj[j]][3])<int (d[bj[j+1]][3]):
bj[j], bj[j+1]=bj[j+1], bj[j]
#②
bj[j], bj[j+1]=bj[j+1], bj[j]
cla=0;k=1
for i in range(1, n) :
cla+=k
if ③
cla=12;k=- 1
elif cla>12:
cla=12;k=-1
elif cla<1:
cla=1; k=1
d[bj[i]]. append (cla)
for i in range(n) :
print (d[bj[i]])
no=input ("请输入查找的学生考号:(输入End结束) ")
while no!="End":
i=1; j=n-1
while i<=j:
m=(i+j)//2
if d[m] [0]==no:
print("学号: "+no+" "+d[m] [1]+"同学在"+str(d[m] [4])+"班")
break
elif ④
i=m+1
else:
j=m-1
if i>j:
print ("没有找到该同学)
no=input ("请输入查找的学生考号: (输入End结束) ")