P5726 【深基4.习9】打分

P5726 【深基4.习9】打分

W1ndys Lv6

P5726 【深基4.习9】打分

【深基4.习9】打分

题目描述

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

输入格式

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

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

输出格式

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

样例 #1

样例输入 #1

1
2
5
9 5 6 8 9

样例输出 #1

1
7.67

提示

数据保证,$3 \leq n \leq 1000$,每个评委打出的分值为为 $0$ 到 $10$(含 $0$ 与 $10$)之间的整数。

题解

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. 程序首先从标准输入中读取评委的人数 $n$。
  2. 接下来,程序从标准输入中读取了一行,其中包含了 $n$ 个评委给选手的打分,这些打分用空格分隔开。
  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))
  • 标题: P5726 【深基4.习9】打分
  • 作者: W1ndys
  • 创建于 : 2024-02-29 20:24:35
  • 更新于 : 2025-01-17 20:28:48
  • 链接: https://blog.w1ndys.top/posts/904f42f7.html
  • 版权声明: 版权所有 © W1ndys,禁止转载。
评论