实现上述功能的Python程序如下,请在划线处填入合适的代码。
def
score(fslist):
jf=[0]*len(fslist)
i=1; c=6;
same=1; st=0
①
while i<len(fslist):
if
fslist[i]!=fslist[i-1]:
for j in range( ② ):
jf[j]=round (sumfs/ same, 2)
st=i ; same=1 ; sumfs=0
else:
same+=1
if
c>0:
c-=1
sumf
s=sumfs+c
if ③
:
break
i+=1
if
st==0: #处理全体同分的情况
jf=[round
(21/len(fslist), 2)]*1en(fslist)
return
jf
import
pandas as pd
import
matplotlib. pyplot as plt
plt.
rcParams[" font. sans-serif"]=[" KaiTi", "SimHei",
"FangSong"] #设置中文字体
df=pd,
read_ excel("dbw. xlsx")
item=["赶猪","投篮","跳绳"]
#创建仅有列标题的DataFrame对象df1
df1=pd.
DataFrame (columns=["项目","班级","姓名","成绩","得分"])
for
i in range(3) :
dfi
tem= ▲ #筛选出同一项目的所有记录
dfitem=dfitem.
sort_ _values ("成绩", ascending=False)
lst=list
(dfitem ["成绩"]) #把“成绩”列数据转为列表存储
dfitem["得分"]=score(lst) #计算得分
df1=pd.
concat ([df1, dfitem]) #合并赋分后的项目记录
dfbj=df1.
groupby ("班级", as_ index=False) #按班级分类,保持原索引
dfzf=dfbj["得分"]. sum( ) #计算各班级总分
plt.
barh( ④ ) #绘制如图b所示柱形图
plt.
ylabel("班级") #y轴标签为“班级”
plt.
title("‘趣味运动会’各班总分对比")
plt.
show( )
①②③④