Crossin的编程教室

标题: 【python 41课 用文件保存游戏(3)问题】 [打印本页]

作者: felixfunky    时间: 2017-2-5 15:36
标题: 【python 41课 用文件保存游戏(3)问题】
本帖最后由 felixfunky 于 2017-2-6 06:13 编辑

from random import randint


name = raw_input('enter your name: ')


f = open('F:\python27\game.txt')
lines = f.readlines()
f.close()


scores = {}
for l in lines:
    s = l.split()
    scores[s[0]] = s[1:]
score = scores.get(name)
if score is None:
    score = [0, 0, 0]


报错了。。。。请问这段代码问题出在哪里。。。反复对照,和示例上面一模一样的

Traceback (most recent call last):
  File "F:/python27/lesson41.1.py", line 12, in <module>
    scores[s[0]] = s[1:]
IndexError: list index out of range



作者: felixfunky    时间: 2017-2-6 09:14
QQ群的助教老师帮解决了.....原因是我的txt文件里不知怎么有一行空行。

另外还有一个问题:程序的最后一段

scores[name] = [str(game_times), str(min_times), str(total_times)]
result = ''
for key in scores:
    save = key+' '+' '.join(scores[key])+'\n'
    result += save

f = file('game.txt','w')      
f.write(result)
f.close()

这里write保存result的条目怎么能确保保存在了原本读取文档的原位置?
比如我输入姓名‘张三’,那么游戏最后write进game.txt的结果怎么才能刚好覆盖原本‘张三’的成绩?
作者: AAA    时间: 2017-2-6 09:54
felixfunky 发表于 2017-2-6 09:14
QQ群的助教老师帮解决了.....原因是我的txt文件里不知怎么有一行空行。

另外还有一个问题:程序的最后一段 ...

最后这段写入是用新数据覆盖“所有原数据”,而不只是恰好覆盖“张三”的数据。对张三数据的修正发生在游戏结束记录成绩的时候:
scores[name] = [str(game_times), str(min_times), str(total_times)]
作者: felixfunky    时间: 2017-2-6 13:50
AAA 发表于 2017-2-6 09:54
最后这段写入是用新数据覆盖“所有原数据”,而不只是恰好覆盖“张三”的数据。对张三数据的修正发生在游 ...

明白了,感谢指导!




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5