2015-03-08 128 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

相關問題