2011-03-23 42 views
0

我一直試圖學習使用這本書的python,但是,我似乎被困在這個挑戰。絕對初學者的Python編程第7章挑戰2

「2.改進瑣事挑戰遊戲,讓它在文件中保持高分列表,程序應該記錄玩家的名字和得分,如果玩家制作列表,使用醃製對象存儲高分。 「

我決定使用列表而不是字典,因爲我不認爲我可以對字典分數進行排序。但是,要根據您的問題更新字典版本,請在加載字典時給它另一個變量,然後將該變量添加到原始字段中。

所以它會去是這樣的:

首先我創建了一個空白的列表來保存字典。

high_scores = [] 

然後運行一個單獨的程序來更新分數。

new_score = {score: player} 

f = open("high_Scores.txt", "rb") 
score_list = high_scores 
f.close() 
score_list.append(new_score) 
score_list = score_list[:10] 
f = open("high_scores.txt", "wb") 
pickle.dump(score_list, f) 
f.close() 

這隻能保存10個分數,並將更新字典。我還沒有想出如何對 分數進行排序,從閱讀中我不認爲在書中的這一點上是可以做到的。 我正在考慮切換到列表或其他東西。我沒有真正做到這一點,所以我不確定在這一點上。如果你知道,讓我知道。

+3

請首先自己做一個誠實的嘗試,如果你沒有回來,你有什麼和__then__我們可以幫助。如果你不這樣做,你根本就不會學習。 – orlp 2011-03-23 15:49:37

+0

你在Python中表達麻煩的具體部分是什麼? – nmichaels 2011-03-23 15:51:09

+6

僞代碼看起來不錯。現在想出如何把它放在Python語法中。這個困難的部分在我看來完成 – Spidy 2011-03-23 15:52:14

回答

0

我不想做這一切爲你,但這裏有一些提示:

無需字典,字典是無序的。使用2元組的排序列表:high_scores = [(score1, name1), (score2, name2), ...]。按相反順序對列表進行排序:high_scores.sort(reverse=True)。使用listappendpop方法添加新條目並刪除不在前十位的條目。

+0

感謝您的提示。我意識到字典不起作用,所以我開始擺弄列表。我想不出讓列表工作的方式,但你的提示確實有幫助。真的很欣賞這個提示。謝謝! – Ben 2011-04-09 08:43:04