关于#python#的问题:7个评委给每个选手打分,评委分数中去掉最高分与最低分,计算所得平均分是每个选手的最后得分,保留2位小数

7个评委给每个选手打分,评委分数中去掉最高分与最低分,计算所得平均分是每个选手的最后得分,保留2位小数。
根据上述计算规则,编写自定义函数完成程序功能,完善下方代码。

""" 根据评委分数,计算去掉最高分与最低分后的平均分,保留2位小数。 函数名:def getScore(fs): 参数fs:表示评委的分数,为列表 返回值:返回选手的得分,保留2位小数 """ 
def getScore(fs):     
  maxfs = 0     
  minfx = 999999     
  n =     
  for f in fs:         
    if f > maxfs:      
              
      elif f < minfx:                 
        minfx = f     
  yxf = sum(fs)-maxfs-minfx     
  avgfs =     
  return avgfs 
fs = [9.56,9.68,9.78,9.67,9.81,9.21,9.75] 
defen =  
print(defen)

根据你给的数据得出

img

修改后的代码:

def getScore(fs):
    maxfs = 0
    minfs = 999999
    n = len(fs)

    for f in fs:
        if f > maxfs:
            maxfs = f
        elif f < minfs:
            minfs = f

    yxf = sum(fs) - maxfs - minfs
    avgfs = round(yxf / (n - 2), 2)
    return avgfs


fs = [9.56, 9.68, 9.78, 9.67, 9.81, 9.21, 9.75]
defen = getScore(fs)
print(defen)

1.首先定义了函数getScore(fs),其中fs表示评委的分数,它是一个列表。初始化maxfs为0和minfs为一个很大的数(999999)。然后遍历评委的分数列表fs,找到最高分和最低分并更新maxfs和minfs的值。

2.计算去掉最高分和最低分后的总分yxf,通过使用sum(fs)减去maxfs和minfs的值。然后,计算平均分avgfs,它是yxf除以剩余评委的数量n-2,并且使用round函数将结果保留两位小数。

3.调用getScore(fs)函数并将分数列表fs作为参数传递给它,将返回的得分赋值给变量defen,然后打印defen。这将输出每个选手的最后得分,保留两位小数。在给定的评委分数列表fs中,最后得分为9.69。

def getScore(fs):
    maxfs = 0
    minfx = 999999
    for f in fs:
        if f > maxfs:
            maxfs = f
        elif f < minfx:
            minfx = f
    avgfs = round((sum(fs) - maxfs - minfx) / (len(fs) - 2), 2)
    return avgfs

fs = [9.56, 9.68, 9.78, 9.67, 9.81, 9.21, 9.75]
defen = getScore(fs)
print(defen)