编制歌手大奖赛评分程序,评委人数及评委的打分均从键盘输入,去掉一个最高分,去掉一个最低分,求选手的最后得分(平均分),不允许用数组。
时间: 2024-12-22 16:19:20 浏览: 9
编写一个歌手大奖赛评分程序,可以按照以下步骤进行:
1. **获取输入**:
- 首先,提示用户输入评委人数,例如:“请输入评委总数:”
- 然后,循环遍历评委人数次,每次请求评委给每位选手打分,并存储下来。
2. **处理分数**:
- 让每个评委依次输入他们的评分,可以用变量存储,如 `score1`, `score2`, ... `score_n`。
- 每次输入后,需要验证分数的有效性(如:是否为整数,范围限制等)。
3. **去最高分和最低分**:
- 使用两个变量分别记录最高分和最低分,以及对应的评委编号。
- 循环内比较当前分数与已知最高分、最低分,如果更高则更新最高分和对应的评委编号;更低则更新最低分。
- 这里需要注意,要去掉的是最高分和最低分,而不是直接删除对应的数据,因为我们不需要实际存储这些分数,只需要计算它们对总分的影响。
4. **计算平均分**:
- 初始化选手总分为0,评委人数减去2(去掉了最高分和最低分)作为有效评委的数量。
- 对于剩余的有效评分,累加到总分上。
- 最后,将总分除以有效评委数量,得到最终的平均分。
5. **输出结果**:
- 显示选手的最后得分。
```python
# 示例代码,假设评委编号从1开始
num_judges = int(input("请输入评委总数:"))
scores = []
for _ in range(num_judges):
score = int(input(f"评委{(_ + 1)}请给出评分:"))
scores.append(score)
max_score = min_score = scores[0]
max_judge = min_judge = 1
for i, s in enumerate(scores[1:], start=2):
if s > max_score:
max_score = s
max_judge = i
elif s < min_score:
min_score = s
min_judge = i
effective_scores = [s for i, s in enumerate(scores) if i != max_judge and i != min_judge]
average_score = sum(effective_scores) / (len(effective_scores))
print(f"选手的最后得分为:{average_score}")
```
阅读全文