2013-11-14 40 views
2

我正在嘗試向我的程序中添加一個函數,該函數可以保持所有運行時間的用戶名和高分。該函數應該加載前一次玩遊戲的高分,並且能夠將用戶/分數元組附加到列表分數。據我的理解,下面的代碼應該可以工作,但由於某種原因,它只會顯示當前程序運行時的用戶/分數集。我如何編輯此代碼來完成此操作。對不起,我只是想了解...如何更改和重新醃製python中的值

import pickle 

    score = 12 

    def scor_func(score): 
     scores = [] 
     name = input("Please enter your name: ") 
     entry = (name, score) 
     scores.append(entry) 
     f = open("Triviascores.bat", "wb") 
     pickle.dump(scores, f) 

     f.close() 

     f = open("Triviascores.bat", "rb") 
     scores = pickle.load(f) 
     f.close() 
     return scores 

    scores = scor_func(score) 
    print(scores) 
+0

unpickle(負荷)。做出改變。醃菜(轉儲)。訂單很重要。 – user2864740

回答

3

你在這裏交換了你的操作。

您的代碼創建一個空的scores列表,添加一個條目,然後保存該列表。之後,您再次加載文件,因此您只需加載即可,您剛創建的新列表就是

您需要首先負載以前的成績,追加的新成績,然後保存數據:

def scor_func(score): 
    name = input("Please enter your name: ") 
    entry = (name, score) 

    scorefile = "Triviascores.bat" 
    if os.path.exists(scorefile): 
     with open(scorefile, 'rb') as sf: 
      scores = pickle.load(sf) 
    else: 
     scores = [] 

    scores.append(entry) 

    with open(scoresfile, "wb") as sf: 
     pickle.dump(scores, sf) 

    return scores 
+0

非常感謝,我終於整理出來了。我是「酸洗」概念的新手。仍然試圖弄清楚它是如何工作的。 –