Турнир

Что нужно сделать

В файле first_tour.txt записано число K и данные об участниках турнира по настольной игре «Орлеан»: фамилии, имена и количество баллов, набранных в первом туре. Во второй тур проходят участники, которые набрали более K баллов в первом туре.

Напишите программу, которая выводит в файл second_tour.txt данные всех участников, прошедших во второй тур, с нумерацией.

В первой строке нужно вывести в файл second_tour.txt количество участников второго тура. Затем программа должна вывести фамилии, инициалы и количество баллов всех участников, прошедших во второй тур, с нумерацией. Имя нужно сократить до одной буквы. Список должен быть отсортирован по убыванию набранных баллов.

Пример:

Содержимое файла first_tour.txt:
80
Ivanov Serg 80
Sergeev Petr 92
Petrov Vasiliy 98
Vasiliev Maxim 78

Содержимое файла second_tour.txt:
2
1) V. Petrov 98
2) P. Sergeev 92

Что оценивается

  • Результат вычислений корректен.
  • Формат вывода соответствует примеру.
  • Основной функционал описан в отдельных функциях.
  • Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).
  • Входные и выходные файлы названы так, как указано в задании.
first_file = open('first_tour.txt', 'r', encoding='UTF-8')
second_file = open('second_tour.txt', 'a', encoding='UTF-8')
win_list = []
start = int(first_file.readline())
for line in first_file:
    person = line.split()
    if int(person[2]) > start:
        new_person = ((person[1][0]), (person[0]), int(person[2]))
        win_list.append(new_person)

win_list.sort(key=lambda i:i[2], reverse=True)
second_file.write(f'{len(win_list)}\n')
for num, pers in enumerate(win_list, 1):
    second_file.write(f'{num}) {pers[0]}. {pers[1]} {pers[2]}\n')

first_file.close()
second_file.close()