Python如何从文件读取数字为整数变量 实现游戏分数存取
原代码问题
- 保存函数变量名冲突:存储分数的列表和循环遍历的变量同名,都叫
points。循环启动后第一次迭代就会把原列表覆盖为单个分数值,第二次迭代会直接抛出「整数对象不可迭代」的错误。同时写入分数时没有加分隔符,多个分数会拼接成一串连续数字,读取时无法拆分出独立分数。 - 加载逻辑缺少类型转换和异常处理:
readlines()返回的结果是带换行符的字符串列表,不会自动转为整数,直接当数值使用会触发类型错误。另外没有处理首次运行时存档文件不存在的场景,会直接抛出文件找不到的报错。
可直接运行的修正代码
场景1:存储多个分数(多玩家/多关卡得分)
保存功能
def save(points_list): with open('gameSave.txt', 'w', encoding='utf-8') as f: for score in points_list: # 每个分数后写入换行作为分隔符 f.write(f'{score}\n') # 调用示例:保存分数列表时直接传入,比如 save([98, 152, 30])
加载功能
points = [] try: with open("gameSave.txt", "r", encoding="utf-8") as g: for line in g: content = line.strip() # 跳过空行避免转换报错 if content: points.append(int(content)) except FileNotFoundError: # 首次运行无存档时初始化默认分数 points = [0]
场景2:仅存储单个总分数
如果你的游戏只需要存一个玩家的总分,可以用更简洁的写法:
保存功能
def save(total_score): with open('gameSave.txt', 'w', encoding='utf-8') as f: f.write(str(total_score))
加载功能
try: with open("gameSave.txt", "r", encoding="utf-8") as g: total_score = int(g.read().strip()) except FileNotFoundError: total_score = 0 # 替换为你的游戏初始分数
内容的提问来源于stack exchange,提问作者Boranbruh
相关产品推荐
相关产品推荐

