Создание таблицы лидеров для оффлайн игры на Python

Для школьного проекта я создаю игру, в которой есть система оценок, и я хотел бы создать своего рода таблицу лидеров. По завершении учителя загружают его на общий сервер, где другие ученики могут загрузить копию игры, но, к сожалению, ученики не могут сохранить на этом сервере; если бы мы могли, списки лидеров были бы частью пирога. Было бы самое большее несколько сотен баллов, чтобы отслеживать, и все компьютеры имеют доступ к Интернету.

Я не знаю много о серверах или хостинге, и я не знаю java, html или любой другой язык, обычно используемый в веб-разработке, поэтому другие связанные вопросы действительно не помогают. Моя игра печатает информацию о выигрыше в текстовый файл, и оттуда я не знаю, как получить ее где-нибудь в Интернете, чтобы каждый мог получить к ней доступ.

Есть ли способ выполнить такую ​​задачу с помощью только Python?

Здесь у меня есть код для обновления файла списка лидеров (при условии, что это будет просто текстовый файл), как только у меня появятся результаты. Это предполагает, что у меня есть копия таблицы лидеров и файл результатов в том же месте.

Это формат моей макетной таблицы лидеров (Leaderboards.txt):

Leaderboards

1) JOE  10001
2) ANA  10000
3) JAK  8400
4) AAA  4000
5) ABC  3999

Вот что распечатывает лог-файл - инициалы и оценка (log.txt):

ABC
3999

Код (работает как для Python 2.7, так и для 3.3):

def extract_log_info(log_file = "log.txt"):
    with open(log_file, 'r') as log_info:
        new_name, new_score = [i.strip('\n') for i in log_info.readlines()[:2]]

    new_score = int(new_score)
    return new_name, new_score

def update_leaderboards(new_name, new_score, lb_file = "Leaderboards.txt"):
    cur_index = None
    with open(lb_file, 'r') as lb_info:
        lb_lines = lb_info.readlines()
        lb_lines_cp = list(lb_lines) # Make a copy for iterating over
        for line in lb_lines_cp:
            if 'Leaderboards' in line or line == '\n':
                continue

            # Now we're at the numbers
            position, name, score = [ i for i in line.split() ]

            if new_score > int(score):
                cur_index = lb_lines.index(line)
                cur_place = int(position.strip(')'))
                break

        # If you have reached the bottom of the leaderboard, and there
        # are no scores lower than yours
        if cur_index is None:
            # last_place essentially gets the number of entries thus far
            last_place = int(lb_lines[-1].split()[0].strip(')'))
            entry = "{}) {}\t{}\n".format((last_place+1), new_name, new_score)
            lb_lines.append(entry)
        else: # You've found a score you've beaten
            entry = "{}) {}\t{}\n".format(cur_place, new_name, new_score)
            lb_lines.insert(cur_index, entry)

            lb_lines_cp = list(lb_lines) # Make a copy for iterating over
            for line in lb_lines_cp[cur_index+1:]:
                position, entry_info = line.split(')', 1)
                new_entry_info = str(int(position)+1) + ')' + entry_info
                lb_lines[lb_lines.index(line)] = new_entry_info

    with open(lb_file, 'w') as lb_file_o:
        lb_file_o.writelines(lb_lines)


if __name__ == '__main__':
    name, score = extract_log_info()
    update_leaderboards(name, score)

Еще немного информации:

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

Ответы на вопрос(1)

Ваш ответ на вопрос