二级 Python 综合应用题

高仿模拟练习,完整编写程序并运行出结果,答案点击按钮展开

168综合应用题:冒泡排序成绩名单

scores.csv 每行 姓名,分数(整数)。请按分数 降序 输出排序后的排名结果(含并列)。 要求:① 手写冒泡排序(不能用 list.sort / sorted 内置排序函数); ② 输出排序后的总人数; ③ 逐行输出 排名,姓名,分数(并列相同排名)。

# scores.csv 示例:
# Tom,85
# Bob,92
# Amy,78
# Ken,92
records = []
with open("scores.csv") as f:
    for line in f:
        line = line.strip()
        if not line:
            continue
        name, s = line.split(",")
        records.append( [name, int(s)] )

# 请在下面编写完整程序:冒泡降序排序 + 输出人数 + 排名,姓名,分数(并列同排名)
参考答案
# 冒泡排序:按分数降序(大在前)
n = len(records)
for i in range(n - 1):
for j in range(n - 1 - i):
if records[j][1] < records[j + 1][1]:
records[j], records[j + 1] = records[j + 1], records[j]
print(n)
# 并列排名:分数与前一个相同则排名相同
rank = 0
prev_score = None
for i in range(n):
if records[i][1] != prev_score:
rank = i + 1
prev_score = records[i][1]
name, s = records[i]
print(f"{rank},{name},{s}")
解析

冒泡两层循环:相邻两两比较,不满足降序就交换。

排名规则:与上一条分数相同则沿用同一名次,否则 rank=i+1。

示例:Bob 92(第1)、Ken 92(第1)、Tom 85(第3)、Amy 78(第4)。

试题及答案仅供练习参考,不保证完全准确,正式考试请以NCRE官方教材及官方内容为准。

©2026 NCRE二级题库 版权所有