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