В файле записаны данные о результатах сдачи экзамена. Каждая строка содержит фамилию, имя и количество баллов, разделенные пробелами:
<Фамилия> <Имя> <Количество баллов>
Вывести фамилии и имена тех учеников, которые не прошли порог - 40б и надпись "Не пройден порог:"
отдельно как другое задание:
К предыдущей задаче добавить к полученному списку нумерацию, сократить имя до одной буквы и поставить перед фамилией и вывести данные в другой файл:
П. Иванов.
Python
Файловый ввод и вывод, информатика. PYTHON/
В четыре строчки решается вторая задача:
Пример входных данных (students.txt):
А первая - и того проще:
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))
Олег Мороз
Подскажите, я вставил код, сделал файлы, но выводит ошибку, не знаете в чём проблема может быть?
Олег Мороз
Не работает крч
Решение первой задачи:
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" со списком учеников, не прошедших порог, где имена будут сокращены до одной буквы и добавлен префикс "П." перед фамилией.
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" со списком учеников, не прошедших порог, где имена будут сокращены до одной буквы и добавлен префикс "П." перед фамилией.
Коля Розгаль
Где "если", где "для", где "писать"? Неправильный код нейросеть привела.
Олег Мороз
Причём тут префикс П, это просто пример
Похожие вопросы
- ЕГЭ информатика python
- ИНФОРМАТИКА, Python, 8 класс
- Задания по информатике, Python
- 24 задание ЕГЭ ИНФОРМАТИКА PYTHON
- Информатика Python задача ЕГЭ
- Помогите с информатикой Задание сделать через ввод массива и for i in range() Python
- Информатика, 8 класс, Python
- Как запретить пользователю ввод букв или цифр в python
- Задача по Python: Найти сумму чисел и при вводе чисел...
- ПОМОГИТЕ, ПОЖАЛУЙСТА, РЕШИТЬ ИНФОРМАТИКУ. Язык программирования Python