В разделе игры, которую я создаю, пользователь вводит имя пользователя. Имя пользователя и оценка пользователя сохраняются в объекте, который маринуется во внешнем файле, в котором есть другие объекты маринованной оценки.
Затем у меня есть кнопка в пользовательском интерфейсе, при нажатии на которую должны отображаться самые высокие баллы всех игроков в порядке убывания.
Я загружаю файл в список с кодом, который я нашел здесь а> .
Highscores = []
Highscores = pickle.load(open("Highscores.txt", "rb"))
Затем я использую пузырьковую сортировку для сортировки списка объектов, показанного ниже.
def bubbleSort():
swapOccured = True
while swapOccured == True:
swapOccured = False
for i in Highscores:
if Highscores[i].score > Highscores[i + 1].score:
hold = Highscores[i + 1]
Highscore[i + 1] = Highscores[i]
Highscores[i] = Highscores[i + 1]
swapOccured = True
Ошибка, которая возвращается,
for index in Highscores:
TypeError: iteration over non-sequence
Я просмотрел другие подобные вопросы, например, здесь, но ошибка заключалась в том, что программа перебирал объект, а не перебирал список объектов. Я почти уверен, что это не та же ошибка, что и в примере, я думаю, это может быть связано с загрузкой списка объектов с рассолом, но я застрял.
Любая помощь будет принята с благодарностью.
currScore = calculateScore()
currUser = tkSimpleDialog.askstring("","Please enter a Username:")
newHighscore = scoreEntry(currScore, currUser)
with open("Highscores.txt", "ab") as f: pickle.dump(newHighscore, f)
- person Adam Higgins   schedule 12.01.2017