Предмет: Информатика,
автор: tyukova123a7
Python
В некотором файле содержатся детские имена. Каждое имя указано с новой строки. После имени через пробел записано одно целое число - количество названных этим именем детей. Имена в файле перемешаны в случайном порядке.
Напишите программу, которая считает данные из файла и выведет на экран 5 наиболее популярных имен (каждое в отдельной строке). Имя файла подается на вход и заранее не известно. Если указанного файла не существует, необходимо вывести сообщение "Файл не найден".
Пример:
Если в файле находятся следующие строки:
Аня 5
Саша 10
Кирилл 150
Игорь 1
Юля 999
Миша 2
Вы должны вывести имена Юля, Кирилл, Саша, Аня, Миша (в порядке убывания количества, каждое в отдельной строке)
Ответы
Автор ответа:
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("Неизвестная ошибка")
Похожие вопросы
Предмет: Английский язык,
автор: abasovazarina0112
Предмет: Алгебра,
автор: kicenkobogdan6
Предмет: Українська література,
автор: ehorgolubenko
Предмет: Английский язык,
автор: saaaahhhaaryuu
Предмет: Английский язык,
автор: tugusheva0011