我對Python非常陌生,我試圖實現的是醃製字典,然後使用某種形式的循環(道歉,如果我有術語不正確!)打印文件中的所有分數。通過循環取消Python字典?
我使用Python 3.3.3,這裏是我的嘗試,用戶輸入一個名字和一個首先保存到文件中的分數,然後我嘗試打印它。但是我無法打印分數。
import pickle
# store the scores in a pickled file
def save_scores(player, score):
f = open("high_score.dat", "ab")
d = {player:score}
pickle.dump(d, f)
f.close
# print all the scores from the file
def print_scores():
# this is the part that I can't get to work!
with open("high_score.dat", "r") as f:
try:
for player, score in pickle.load(f):
print("Player: ", player, " scored : ", score)
except EOFError:
pass
f.close
def main():
player_name = input("Enter a name: ")
player_score = input("Enter a score: ")
save_scores(player = player_name, score = player_score)
print_scores()
main()
input("\nPress the Enter key to exit")
我已經Google'd和搜索爲#1類似的問題,但我一定是使用了錯誤的術語我還沒有找到一個解決方案。
在此先感謝。
感謝您的全面回答!我已更新我的問題以顯示我正在使用版本3.3.3。我也更新了代碼以反映更改,但是我現在看到以下錯誤:文件「H:/Sandbox/python/save_and_print_scores.py」,第19行,print_scores 中的玩家,pickle.load(f)中的分數。 items(): TypeError:'str'不支持緩衝接口 –
@IanCarpenter,可以將'high_score.dat'文件上傳到某處? – falsetru
@IanCarpenter,我在代碼中發現了一個錯字。在下面的行中,'k','v'應該被替換爲:'print(「Player:」,k,「scored:」,v)'。相應地更新了答案。 – falsetru