2015-03-08 133 views
-3

最近,我的兄弟向我介绍了python的奇迹;自从我一直在享受编程的这个方面,但是我似乎有一个问题。 我创建了一个由人名组成的文件,每个名称都有多个结果。我已经创建了能够计算每个人3个结果的平均值的代码,它的工作原理。这甚至可能吗?

这里是我的文件 -

- Tim 
- 3 
- 9 
- 6 
- Bill 
- 7 
- 5 
- 3 
- Steve 
- 10 
- 9 
- 8 

不幸的是,这些结果是从游戏,用户可以玩游戏的次数越多越好,因此,如果他们是四个结果在一个人身上,我的代码将无法工作。出于这个原因,我想知道我怎样才能得到每个人的最后三个结果。我不想改变我的代码,因为我相信创建新的代码会让用户的第一个结果弹出并追加新的结果会更容易。

例如,如果添的新的结果是2,这个文件看起来应该喜欢 -

- Tim 
- 6 
- 7 
- 2 

我不想改变我的文件,例如,CSV格式;因为我的代码只能以相同格式的文件工作。我已经将文件转换为Python中的列表,这样我就可以弹出并在一个序列中追加结果,这里是我的代码。

file = open('Results.txt', 'r') 
lines = file.read().splitlines() 
print (lines) 

我知道他们是没有太大的代码,但由于某种原因,我不知道如何流行的人的第一号和追加他们的新score.I一直在研究,我相信我需要使用'如果语句'与文件的索引为了在一个序列中弹出结果并将新结果保存在一个序列中,但是我完全被卡住了。我在正确的轨道上?将文件转换为列表工作?我喜欢编码,但老实说,我想放弃。谁能帮帮我吗?任何帮助将深表感谢。谢谢!

+0

如果你不知道的* if语句*是,你应该留出您当前的任务,花一些时间学习更多有关编程。这是学习Python的很好的资源:http://www.diveintopython.net – 2015-03-08 17:29:35

+0

我明白if语句是什么,但是我不确定语句的代码,我只是坚持并寻求帮助。不管怎样,谢谢你。 – Assimilate101 2015-03-08 17:46:28

回答

2

A collections.deque将允许您指定要保留的最大元素数量。

>>> import collections 
>>> foo = collections.deque(maxlen=3) 
>>> foo.append(1) 
>>> foo.append(2) 
>>> foo.append(3) 
>>> foo 
deque([1, 2, 3], maxlen=3) 
>>> foo.append(4) 
>>> foo 
deque([2, 3, 4], maxlen=3) 
+1

抱歉打扰你,但我是一个初学者,我将如何合并这个,所以我的程序将工作?我正在研究collection.deque,但是他们能够帮助我的任何事情都可以通过研究而变得困惑吗? – Assimilate101 2015-03-08 17:39:47

+0

而不是阅读到列表中的项目,阅读他们到一个双层。 – 2015-03-08 17:50:18

+0

谢谢你的回应! – Assimilate101 2015-03-08 17:50:57

0

您可以使用list slicing

print(lines[-3:]) 
+0

我已经尝试了列表切片,但是我无法弄清楚一个序列,它将切分最后一个数字(如果它们多于3结果) – Assimilate101 2015-03-08 17:44:36

相关问题