petit probleme sur un fichier avec pickle
bonjour j'ai creer un programme python me permettant d'enregistrer et d'imprimer quand voulu le tableau des scores 5 en l'occurence ecrire a la fin du jeu et pouvoir le lire apres avoir enregistrer ce score petit probleme c est un programme que j'ai trouver sur internet il est dans l'ensemble bien je pense mais il y avais un probleme de tri voici le code que j ai pu trouver sur internet mais qui trie je trouve mal
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| import pickle
import os
global high_scores
def setup_scores():
global high_scores
high_scores = {}
if os.path.isfile('highscores.pkl'):
with open("highscores.pkl", "rb") as h:
high_scores = pickle.load(h)
else:
high_scores = {"Adam Smith": 65536, "John Doe": 10000}
def save_score(name, score):
new_score = (name, score)
if new_score[0] in high_scores:
if new_score[1] > high_scores[new_score[0]]:
high_scores[new_score[0]] = new_score[1]
else:
high_scores[new_score[0]] = new_score[1]
with open("highscores.pkl","wb") as out:
pickle.dump(high_scores, out)
def print_scores():
for name, score in high_scores.items():
print("{{name:>{col_width}}} | {{score:<{col_width}}}".format(col_width=(80-3)//2).format(name=name, score=score))
setup_scores()
save_score(raw_input('Name:'), raw_input('Score:')) # inputs only for testing, can use variables instead
print_scores() |
voici mon programme actuel ou j'utilise un tri comme nous ayant appris par "insertion"
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| import pickle
import os
global high_scores
def setup_scores():
global high_scores
high_scores = {}
if os.path.isfile('highscores.pkl'):
with open("highscores.pkl", "rb") as h:
high_scores = pickle.load(h)
else:
high_scores = {"Adam Smith": 65536, "John Doe": 10000}
def save_score(name, score):
new_score = (name, score)
for i in range (1,len(high_scores)): #on precise que ces instructions vont se repeter sur la longueur de la suite
n=high_scores[i] #selectionne l'element dans la suite
p=i
while p>0 and high_scores[p-1]>n:
high_scores[p]=high_scores[p-1]
p=p-1 # decalage des chiffres dans la suite
if p!=i:
high_scores[p]=n
with open("highscores.pkl","wb") as out:
pickle.dump(high_scores, out)
def print_scores():
for name, score in high_scores.items():
print("{{name:>{col_width}}} | {{score:<{col_width}}}".format(col_width=(80-3)//2).format(name=name, score=score))
setup_scores()
save_score(input('Name:'), input('Score:')) # inputs only for testing, can use variables instead
print_scores() |
Le message d'erreur:
Code:
1 2 3 4 5 6
| Traceback (most recent call last):
File "C:/Python34/fichier python/highscoretest.py", line 34, in <module>
save_score(input('Name:'), input('Score:')) # inputs only for testing, can use variables instead
File "C:/Python34/fichier python/highscoretest.py", line 18, in save_score
n=high_scores[i] #selectionne l'element dans la suite
KeyError: 1 |
ce que j'aimerai c est faire en sorte que le tri fonctionne et j'aimerai aussi changer le format du fichier de .pkl en .txt