Предмет: Информатика, автор: tyukova123a7

Python
В некотором файле содержатся детские имена. Каждое имя указано с новой строки. После имени через пробел записано одно целое число - количество названных этим именем детей. Имена в файле перемешаны в случайном порядке.

Напишите программу, которая считает данные из файла и выведет на экран 5 наиболее популярных имен (каждое в отдельной строке). Имя файла подается на вход и заранее не известно. Если указанного файла не существует, необходимо вывести сообщение "Файл не найден".

Пример:

Если в файле находятся следующие строки:

Аня 5

Саша 10

Кирилл 150

Игорь 1

Юля 999

Миша 2

Вы должны вывести имена Юля, Кирилл, Саша, Аня, Миша (в порядке убывания количества, каждое в отдельной строке)

Ответы

Автор ответа: archie242
0

Відповідь:

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("Неизвестная ошибка")

Похожие вопросы