设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 14014|回复: 3
打印 上一主题 下一主题

【python 41课 用文件保存游戏(3)问题】

[复制链接]

3

主题

0

好友

47

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2017-2-5 15:36:55 |只看该作者 |倒序浏览
本帖最后由 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


回复

使用道具 举报

3

主题

0

好友

47

积分

新手上路

Rank: 1

沙发
发表于 2017-2-6 09:14:51 |只看该作者
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的结果怎么才能刚好覆盖原本‘张三’的成绩?
回复

使用道具 举报

1

主题

1

好友

27

积分

新手上路

Rank: 1

板凳
发表于 2017-2-6 09:54:58 |只看该作者
felixfunky 发表于 2017-2-6 09:14
QQ群的助教老师帮解决了.....原因是我的txt文件里不知怎么有一行空行。

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

最后这段写入是用新数据覆盖“所有原数据”,而不只是恰好覆盖“张三”的数据。对张三数据的修正发生在游戏结束记录成绩的时候:
scores[name] = [str(game_times), str(min_times), str(total_times)]
回复

使用道具 举报

3

主题

0

好友

47

积分

新手上路

Rank: 1

地板
发表于 2017-2-6 13:50:13 |只看该作者
AAA 发表于 2017-2-6 09:54
最后这段写入是用新数据覆盖“所有原数据”,而不只是恰好覆盖“张三”的数据。对张三数据的修正发生在游 ...

明白了,感谢指导!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-22 05:55 , Processed in 0.024388 second(s), 27 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部