- 帖子
- 16
- 精华
- 0
- 积分
- 52
- 阅读权限
- 20
- 注册时间
- 2013-7-25
- 最后登录
- 2013-7-31
|
你的小游戏现在已经可以保存成绩了,但只有一组成绩,不管谁来玩,都会算在里面。所以今天我还要加上一个更多的功能:存储多组成绩。玩家需要做的就是,在游戏开始前,输入自己的名字。而我会根据这个名字记录他的成绩。这个功能所用到的内容我们几乎都说过,现在要把它们结合起来。
首先要输入名字,这是我们用来区分玩家成绩的依据:- name = raw_input('请输入你的名字:')
复制代码 接下来,我们读取文件。与之前不同,我们用readlines把每组成绩分开来:再用一个字典来记录所有的成绩:- scores = {}
- for l in lines:
- s = l.split()
- scores[s[0]] = s[1:]
复制代码 这个字典中,每一项的key是玩家的名字,value是一个由剩下的数据组成的数组。这里每一个value就相当于我们之前的成绩数据。
我们要找到当前玩家的数据:字典类的get方法是按照给定key寻找对应项,如果不存在这样的key,就返回空值None。
所以如果没有找到该玩家的数据,说明他是一个新玩家,我们给他初始化一组成绩:- if score is None:
- score = [0, 0, 0]
复制代码 这是我们拿到的score,已经和上一课中的score一样了,因此剩下的很多代码都不用改动。
当游戏结束,记录成绩的时候,和之前的方法不一样。我们不能直接把这次成绩存到文件里,那样就会覆盖掉别人的成绩。必须先把成绩更新到scores字典中,再统一写回文件中。
把成绩更新到scores中,如果没有这一项,会自动生成新条目:- scores[name] = [str(game_times), str(min_times), str(total_times)]
复制代码 对于每一项成绩,我们要将其格式化:- result = ''
- for n in scores:
- line = n + ' ' + ' '.join(scores[n]) + '\n'
- result += line
复制代码 把scores中的每一项按照“名字 游戏次数 最低轮数 总轮数\n”的格式拼成字符串,再全部放到result里,就得到了我们要保存的结果。
最后就和之前一样,把result保存到文件中。
如果你充分理解了这个程序,恭喜你,你对文件处理已经有了一个基本的了解。在日常工作学习中,如果需要处理一些大量重复机械的文件操作,比如整理格式、更改文件中的部分文字、统计数据等等,都可以试着用python来解决。
#==== Crossin的编程教室 ====#
微信ID:crossincode
QQ群:312723402
面向零基础初学者的编程课
每天5分钟,轻松学编程 |
|