P5726 【深基4.习9】打分

【深基4.习9】打分

题目描述

现在有 n(n1000)n(n \le 1000) 位评委给选手打分,分值从 001010。需要去掉一个最高分,去掉一个最低分(如果有多个最高或者最低分,也只需要去掉一个),剩下的评分的平均数就是这位选手的得分。现在输入评委人数和他们的打分,请输出选手的最后得分,精确到 22 位小数。

输入格式

第一行输入一个正整数 nn,表示有 nn 个评委。

第二行输入 nn 个正整数,第 ii 个正整数表示第 ii 个评委打出的分值。

输出格式

输出一行一个两位小数,表示选手的最后得分。

样例 #1

样例输入 #1

1
2
5
9 5 6 8 9

样例输出 #1

1
7.67

提示

数据保证,3n10003 \leq n \leq 1000,每个评委打出的分值为为 001010(含 001010)之间的整数。

题解

1
2
3
4
5
6
7
8
n = int(input())
score = list(map(int, input().split()))
min = min(score)
max = max(score)
score.remove(min)
score.remove(max)
average = sum(score) / len(score)
print("{:.3}".format(average))

题解解释

这段代码是一个Python程序,用于计算选手的最后得分。下面是对代码的解释:

  1. 程序首先从标准输入中读取评委的人数 nn
  2. 接下来,程序从标准输入中读取了一行,其中包含了 nn 个评委给选手的打分,这些打分用空格分隔开。
  3. 然后,程序将这些分数转换为整数并存储在名为 score 的列表中。
  4. 程序找到了列表中的最低分和最高分,通过使用 min()max() 函数来实现。
  5. 接着,程序使用 remove() 函数将最低分和最高分从列表中删除,这样列表中就只剩下了去掉最低分和最高分后的评委分数。
  6. 程序计算剩下评委的分数的平均值,通过求和所有分数并除以剩余评委的数量来实现。
  7. 最后,程序使用 format() 函数将平均值格式化为两位小数,并将结果打印到标准输出。

这段代码的逻辑是合理的,能够正确计算选手的最终得分。

知识点

这段代码涉及了几个Python编程的知识点:

  1. 输入输出:使用 input() 函数从标准输入读取数据,并使用 print() 函数将结果输出到标准输出。
  2. 列表操作:使用列表来存储评委的打分,并对列表进行操作,如查找最大值、最小值以及删除元素。
  3. 循环与条件语句:虽然代码中没有显式的循环或条件语句,但在某种程度上,使用了内置函数 min()max() 来找到最低分和最高分,这可以视为在列表元素上进行了一种隐式的遍历和比较。
  4. 字符串格式化:使用 format() 函数对浮点数进行格式化,以保留指定位数的小数位数。
  5. 数学计算:计算列表中元素的和以及求列表的长度,用于计算评委得分的平均值。

综上所述,这段代码涵盖了Python中的一些基本概念,包括输入输出、数据结构、条件语句、循环、字符串格式化和数学计算。

代码改进

1
2
3
4
5
6
7
8
9
10
# 读取评委人数和打分
n = int(input())
score = [int(x) for x in input().split()]

# 去除最高分和最低分
score = sorted(score)[1:-1]

# 计算平均分并输出
average = sum(score) / len(score)
print("{:.2f}".format(average))