最近,我哥哥向我介绍了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 ;如果声明'使用文件的索引以按顺序弹出结果并将新结果保存在序列中,但是我完全卡住了。我在正确的轨道上吗?将文件转换为列表是否有效?我喜欢编码但老实说,我觉得放弃。谁能帮帮我吗?任何帮助都将深表感谢。谢谢!
答案 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:])