如何从存储游戏分数的外部CSV文件中打印最高分数?
如何从Top Trumps游戏的分数CSV中提取最高分数?
你当前的代码已经实现了分数的追加存储和所有历史记录的打印,要提取最高分数,只需在读取CSV时对分数做数值转换,再遍历记录找出最大值即可。以下是修改后的完整代码:
import csv field_names = ['player_name','score'] # 假设player_name和score是当前局的游戏结果数据 player_name = "张三" score = 150 # 追加新分数到CSV文件 data = [{"player_name": player_name, 'score': score}] with open("score.csv", "a", newline='') as csv_file: spreadsheet = csv.DictWriter(csv_file, fieldnames=field_names) # 首次写入时添加表头(避免重复写入) csv_file.seek(0, 2) if csv_file.tell() == 0: spreadsheet.writeheader() spreadsheet.writerows(data) # 读取文件并找出最高分数 max_score = -1 top_player = "" with open('score.csv', 'r') as csv_file: spreadsheet = csv.DictReader(csv_file) for row in spreadsheet: # 将分数从字符串转为整数,避免字符串比较逻辑错误 current_score = int(row['score']) if current_score > max_score: max_score = current_score top_player = row['player_name'] if max_score != -1: print(f"最高分数是:{max_score},由玩家{top_player}获得") else: print("分数文件为空,暂无游戏记录")
关键细节说明:
- 读取CSV时必须把
score字段从字符串转为整数,否则直接比较字符串会得到错误结果(比如"99"会被判定为比"100"大) - 加入表头判断逻辑,避免每次追加数据时重复写入表头
- 初始化
max_score为-1,方便区分文件为空的情况 - 同时记录了最高分数对应的玩家,若只需要分数本身,可删除
top_player相关代码
内容的提问来源于stack exchange,提问作者zzzz-a
相关产品推荐
相关产品推荐

