这甚至可能吗?

时间:2015-03-08 17:21:15

标签: python

最近,我哥哥向我介绍了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)

我知道他们的代码不多,但出于某些原因,我不明白如何弹出第一个人并加上他们的新分数。我一直在研究,我相信我需要使用&#39 ;如果声明'使用文件的索引以按顺序弹出结果并将新结果保存在序列中,但是我完全卡住了。我在正确的轨道上吗?将文件转换为列表是否有效?我喜欢编码但老实说,我觉得放弃。谁能帮帮我吗?任何帮助都将深表感谢。谢谢!

2 个答案:

答案 0 :(得分:2)

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 :(得分:0)

您可以使用list slicing

print(lines[-3:])