使用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
相关产品推荐
相关产品推荐

