Python数字猜谜游戏如何读取、修改并写入高分数据到文本文件
数字猜谜游戏Top10高分榜实现方案
核心逻辑说明
你的需求是按猜测次数从小到大排序(次数越少排名越高),保留前10名的成绩写入本地文件,修改逻辑如下:
- 首先读取本地文件中所有历史高分存入列表
- 将本次玩家的猜测次数加入列表后升序排序
- 截断列表只保留前10个元素,即最新的Top10榜单
- 将新的榜单覆盖写入原文本文件即可
完整修改代码
# 变量初始化,guesses替换为你本局游戏实际统计的猜测次数 highscores = [] guesses = 3 # 示例值,替换为你的业务变量 beatenscores = 0 # 原有重置分数函数可保留 def reset_scores(): with open("Numbergame.txt", "w") as f: pass # 读取历史高分,增加空行判断避免报错 with open('Numbergame.txt', 'r', encoding='utf-8') as f: for line in f: stripped_line = line.strip() if stripped_line: highscores.append(int(stripped_line)) # 统计击败的玩家数量(可选功能) beatenscores = sum(1 for score in highscores if score > guesses) if beatenscores > 0: print(f"本次你击败了{beatenscores}位历史玩家") # 更新高分榜:加入新成绩→排序→保留前10 highscores.append(guesses) highscores.sort() highscores = highscores[:10] # 写入新的高分榜到文件 with open("Numbergame.txt", "w", encoding='utf-8') as f: for score in highscores: f.write(f"{score}\n") # 上榜提示 current_rank = highscores.index(guesses) + 1 if current_rank <= 10: print(f"恭喜登上Top10榜单!你的成绩是{guesses}次,排名第{current_rank}位") else: print(f"本次成绩为{guesses}次,未能上榜,继续加油~")
注意事项
- 代码中增加了空行判断逻辑,就算文件为空或者存在空白行也不会报错
- 排序直接调用内置sort方法,比自己遍历比较效率更高、出错概率更低
- 写入文件时采用覆盖写模式,自动替换旧的榜单内容
- 如果需要展示玩家名称,可将存储的内容改成
名称:次数的格式,读取后拆分排序即可
内容的提问来源于stack exchange,提问作者KGGaming Fluff
相关产品推荐
相关产品推荐

