Программирование на Python для начинающих Глава 7 Задача 2

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


person Ben    schedule 23.03.2011    source источник
comment
Пожалуйста, сначала сделайте честную попытку сами, а если вы потерпите неудачу, вернитесь с тем, что у вас есть, и тогда мы сможем помочь. Если вы этого не сделаете, вы не научитесь вообще.   -  person orlp    schedule 23.03.2011
comment
Какую конкретную часть этого у вас возникли проблемы с выражением на Python?   -  person nmichaels    schedule 23.03.2011
comment
Псевдокод выглядит хорошо. Теперь выясните, как поместить это в синтаксис Python. Эта трудная часть сделана, на мой взгляд   -  person Spidy    schedule 23.03.2011
comment
Не называйте файл .txt, когда он полон солений.   -  person Lennart Regebro    schedule 24.03.2011


Ответы (1)


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

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

person Don O'Donnell    schedule 09.04.2011
comment
спасибо за подсказку. Я понял, что словари не будут работать, поэтому начал возиться со списками. Я не мог придумать, как заставить списки работать, но ваш совет действительно помог. очень ценю подсказку. Благодарность! - person Ben; 09.04.2011