这有可能吗?

2024-04-25 12:14:02 发布

您现在位置:Python中文网/ 问答频道 /正文

最近,我哥哥向我介绍了python的奇妙之处;自从我喜欢编程的这一方面以来,我似乎遇到了一个问题。 我已经创建了一个由人名组成的文件,每个人名都有许多结果。我已经创建了代码,可以计算出每个人的平均3个结果,它的工作。你知道吗

这是我的档案-

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

不幸的是,这些结果来自一个游戏,用户可以玩游戏的次数尽可能多,因此,如果他们是四个结果在一个人,我的代码将无法工作。基于这个原因,我想知道如何从每个人那里得到最后三个结果。我不想修改我的代码,因为我相信创建新代码会更容易,它会弹出用户的第一个结果,并附加他们的新结果。你知道吗

例如,如果Tim的新结果是2,则文件应该如下所示-

 - Tim
 - 6 
 - 7
 - 2

我不想改变我的文件的格式,例如csv;因为我的代码只能以文件的相同格式工作。我已经用python将文件转换成一个列表,这样我就可以按顺序弹出并附加结果,下面是我的代码。你知道吗

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

我知道他们没有太多的代码,但出于某种原因,我不知道如何弹出第一个数字的人和附加他们的新分数。我一直在研究,我相信我需要使用一个'如果语句'的索引文件,以便弹出一个序列中的结果,并保存在一个序列中的新结果,但我完全卡住了。我走对了吗?把文件转换成列表行吗?我喜欢编码,但老实说,我想放弃。有人能帮我吗?任何帮助都将是巨大的谢谢。谢谢你!你知道吗


Tags: 文件代码用户游戏列表格式编程序列
2条回答

您可以使用list slicing

print(lines[-3:])

^{}允许您指定要保留的最大元素数。你知道吗

>>> 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)

相关问题 更多 >