Python

Файловый ввод и вывод, информатика. PYTHON/

В файле записаны данные о результатах сдачи экзамена. Каждая строка содержит фамилию, имя и количество баллов, разделенные пробелами:
<Фамилия> <Имя> <Количество баллов>
Вывести фамилии и имена тех учеников, которые не прошли порог - 40б и надпись "Не пройден порог:"


отдельно как другое задание:
К предыдущей задаче добавить к полученному списку нумерацию, сократить имя до одной буквы и поставить перед фамилией и вывести данные в другой файл:
П. Иванов.
Олег Мороз
Олег Мороз
119
В четыре строчки решается вторая задача:
 with open("students.txt", "r") as fin, open("losers_numbered.txt", "w") as fout:
students = (s.split() for s in fin)
losers = (f"{fn[0]}. {sn}" for sn, fn, score in students if int(score) < 40)
print('\n'.join(f"{i}. {loser}" for i, loser in enumerate(losers, 1)), file = fout)
И с нумерацией, по условию.
Пример входных данных (students.txt):
 Варенуха Иван 39
Лузеров Лузер 1
Дядя Федя 41
Bond James 80
Выходные данные (losers_numbered.txt):
 1. И. Варенуха
2. Л. Лузеров

А первая - и того проще:
 with open("students.txt", "r") as fin, open("losers.txt", "w") as fout:
students = (s.split() for s in fin)
losers = (f"{sn} {fn}" for sn, fn, score in students if int(score) < 40)
print('\n'.join(losers), file = fout)
Если выводить в консоль, то убираем всё, что относится ко второму файлу:
 with open("students.txt", "r") as fin:
students = (s.split() for s in fin)
losers = (f"{sn} {fn}" for sn, fn, score in students if int(score) < 40)
print('\n'.join(losers))
КР
Коля Розгаль
87 571
Лучший ответ
Олег Мороз Подскажите, я вставил код, сделал файлы, но выводит ошибку, не знаете в чём проблема может быть?
Олег Мороз Не работает крч
Решение первой задачи:

with open("результаты.txt", "r") as file:
for line in file:
data = line.strip().split()
if int(data[2]) < 40:
print("Не пройден порог:", data[0], data[1])

Решение второй задачи:

with open("результаты.txt", "r") as file:
results = []
for line in file:
data = line.strip().split()
if int(data[2]) < 40:
results.append(f"П. {data[1][0]}. {data[0]}")

with open("результаты_новые.txt", "w") as file:
for result in results:
file.write(result + "\n")

В результате выполнения второй задачи будет создан файл "результаты_новые.txt" со списком учеников, не прошедших порог, где имена будут сокращены до одной буквы и добавлен префикс "П." перед фамилией.
Артём Карякин
Артём Карякин
25 526
Коля Розгаль Где "если", где "для", где "писать"? Неправильный код нейросеть привела.
Олег Мороз Причём тут префикс П, это просто пример