Я пытался изучить Python с помощью этой книги, однако, похоже, я застрял на этой задаче.

«2. Улучшить игру Trivia Challenge, чтобы она сохраняла список рекордов в файле. Программа должна записывать имя игрока и баллы, если игрок попадет в список. Сохраняйте рекорды с помощью маринованного предмета».

Я решил использовать списки вместо словарей, потому что не думаю, что смогу сортировать словарные баллы. Однако, чтобы обновить версию словаря в соответствии с вашим вопросом, при загрузке словаря укажите другую переменную, а затем добавьте эту переменную к оригиналу.

Так что это будет примерно так:

Сначала я создал пустой список для хранения словаря.

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 баллов и обновит словарь. Я не понял, как сортировать баллы, и, прочитав, я не думаю, что это возможно сделать на этом этапе книги. Я думал о переходе на списки или что-то в этом роде. Я действительно не работал над этим, поэтому я не уверен на данный момент. если разберешься дай знать.

0
Ben 23 Мар 2011 в 18:48
3
Пожалуйста, сначала сделайте честную попытку сами, а если вы потерпите неудачу, вернитесь с тем, что у вас есть, и тогда мы сможем помочь. Если вы этого не сделаете, вы не научитесь вообще.
 – 
orlp
23 Мар 2011 в 18:49
Какую конкретную часть этого у вас возникли проблемы с выражением на Python?
 – 
nmichaels
23 Мар 2011 в 18:51
6
Псевдокод выглядит хорошо. Теперь выясните, как поместить это в синтаксис Python. Эта трудная часть сделана, на мой взгляд
 – 
Spidy
23 Мар 2011 в 18:52
2
Не называйте файл .txt, когда он полон солений.
 – 
Lennart Regebro
24 Мар 2011 в 00:10

1 ответ

Я не хочу делать все это за вас, но вот несколько советов:

Нет необходимости в словаре, словари неупорядочены. Используйте отсортированный список из двух кортежей: high_scores = [(score1, name1), (score2, name2), ...]. Отсортируйте список в обратном порядке: high_scores.sort(reverse=True). Используйте методы list append и pop для добавления новых записей и удаления записей, которые больше не входят в первую десятку.

0
Don O'Donnell 9 Апр 2011 в 09:57
Спасибо за подсказку. Я понял, что словари не будут работать, поэтому начал возиться со списками. Я не мог придумать, как заставить списки работать, но ваш совет действительно помог. очень ценю подсказку. Благодарность!
 – 
Ben
9 Апр 2011 в 12:43