
Python В некотором файле содержатся детские имена. Каждое имя указано с новой строки. После имени
через пробел записано одно целое число - количество названных этим именем детей. Имена в файле перемешаны в случайном порядке. Напишите программу, которая считает данные из файла и выведет на экран 5 наиболее популярных имен (каждое в отдельной строке). Имя файла подается на вход и заранее не известно. Если указанного файла не существует, необходимо вывести сообщение "Файл не найден". Пример: Если в файле находятся следующие строки: Аня 5 Саша 10 Кирилл 150 Игорь 1 Юля 999 Миша 2 Вы должны вывести имена Юля, Кирилл, Саша, Аня, Миша (в порядке убывания количества, каждое в отдельной строке)

Ответы на вопрос

Відповідь:
import operator
filename = input("Введите имя файла: ")
try:
with open(filename, 'r') as f:
names = {}
for line in f:
parts = line.strip().split()
name = parts[0]
count = int(parts[1])
if name in names:
names[name] += count
else:
names[name] = count
sorted_names = sorted(names.items(), key=operator.itemgetter(1), reverse=True)
for name, count in sorted_names[:5]:
print(name)
except FileNotFoundError:
print("Файл не найден")
except:
print("Неизвестная ошибка")



Для решения данной задачи, необходимо выполнить следующие шаги:
1. Спросить пользователя о имени файла и сохранить его в переменную.
2. Попытаться открыть указанный файл для чтения.
- Если файл не найден, вывести сообщение "Файл не найден" и завершить программу. - Если файл найден, перейти к следующему шагу.
3. Создать словарь, где ключами будут имена детей, а значениями будут количество названных ими детей.
4. Прочитать содержимое файла построчно.
- Для каждой строки: - Разделить строку на две части - имя ребенка и количество детей. - Преобразовать количество детей из строки в целое число. - Если имя ребенка уже присутствует в словаре, увеличить значение на количество детей из текущей строки. - Если имя ребенка отсутствует в словаре, добавить его в словарь с количеством детей из текущей строки.
5. Закрыть файл.
6. Отсортировать словарь по значению в убывающем порядке и сохранить результат в переменную.
7. Вывести на экран первые 5 элементов отсортированного словаря, используя цикл.
Вот пример реализации данной программы на языке Python:
```python file_name = input("Введите имя файла: ")
try: file = open(file_name, 'r') except FileNotFoundError: print("Файл не найден") exit()
names = {} for line in file: name, count = line.split() count = int(count) if name in names: names[name] += count else: names[name] = count
file.close()
sorted_names = sorted(names.items(), key=lambda x: x[1], reverse=True)
for i in range(5): if i < len(sorted_names): print(sorted_names[i][0])
```
После выполнения данного кода, программа будет запрашивать имя файла, и затем выводить 5 наиболее популярных имен из этого файла.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili