You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python读取文本文件并查找最高分的实现方案咨询

读取分数文件并找到最高分的实现方法

当然可以用max()函数来解决这个问题!结合你之前的文件格式(用|分隔用户名和分数),咱们可以这样一步步实现:

方法1:用csv模块读取(和你写入的方式统一)

因为你之前是用csv.writer写入的文件,用csv.reader读取会更适配,代码也更简洁:

import csv

# 读取文件并转换记录格式
with open("hisEasyR.txt", "r") as hisEasyRFile:
    # 指定分隔符为|,和写入时一致
    reader = csv.reader(hisEasyRFile, delimiter='|')
    # 将每行的分数转为整数,避免字符串比较的错误
    score_records = [(username, int(score)) for username, score in reader]

# 使用max函数,根据分数(元组的第二个元素)筛选最高分记录
highest_entry = max(score_records, key=lambda entry: entry[1])

# 输出结果
print(f"最高分是 {highest_entry[1]},来自用户 {highest_entry[0]}")

方法2:直接按行读取(无需csv模块)

如果你的文件格式很简单,也可以不用csv模块,直接逐行处理:

score_records = []
with open("hisEasyR.txt", "r") as hisEasyRFile:
    for line in hisEasyRFile:
        # 去掉换行符并分割内容
        username, score_str = line.strip().split('|')
        # 必须把分数转为整数,否则字符串比较会出错(比如"10"会比"5"小)
        score = int(score_str)
        score_records.append( (username, score) )

# 同样用max函数找最高分
highest_entry = max(score_records, key=lambda entry: entry[1])
print(f"最高分:{highest_entry[1]},用户:{highest_entry[0]}")

额外补充:处理多个用户同分的情况

如果有多个用户都是最高分,上面的max()只会返回第一个遇到的记录。要是你想找出所有最高分用户,可以这样做:

# 先拿到最高分的值
max_score = max(score for username, score in score_records)
# 筛选出所有分数等于最高分的用户
top_users = [username for username, score in score_records if score == max_score]

print(f"最高分是 {max_score},获得最高分的用户有:{', '.join(top_users)}")

需要注意的点:

  • 一定要把从文件读取的分数字符串转为整数(int(score)),不然字符串的大小比较逻辑和数字不一样,会得到错误结果。
  • 用with语句打开文件可以自动帮你关闭文件,避免资源泄漏。

内容的提问来源于stack exchange,提问作者Programmer12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:42:14