Ошибка: TypeError: 'int' object is not callable

Пытаюсь решить задачу:

В файле input.txt имеется информация о баллах за полугодие по каждому предмету для каждого ученика в школе. На основании этих данных нужно вывести в файл output.txt средний арифметический балл по всем дисциплинам для каждого ученика.

Информация в файле не упорядочена по фамилиям или предметам. Данные в файле представляют собой набор строк, каждая строка имеет вид: фамилия предмет средний_балл. Между данными ровно один пробел.

Файл input.txt выглядит следующим образом. \n Петров математика 4 \n Иванов физика 3 \n Васильева биология 5 \n Васильева математика 3 \n Иванов химия 4 \n Петров физика 5 \n Петров химия 4 \n Повторяющиеся фамилии это один и тот же человек, но с оценками по разным предметам.

Написала следующий типа код (прошу, прощения, если в коде будут глупые ошибки, поскольку стаж работы с Python у меня меньше месяца):

def main():
    dct = {}
    with open("input.txt", encoding='utf-8') as lines:
        for line in lines:
            name, grade, score = map(int(),line.split()[-3:]) 
            dct[name] = dct.get(name, []) + [score]
    for name in dct:
        x = dct.get(name)
        print(f'{name}, {sum(x)/len(x)}')
 
if __name__ == "__main__":
    main()

file.close()

На выходе "TypeError: 'int' object is not callable". Помогите пожалуйста разобраться!


Ответы (1 шт):

Автор решения: MarianD

Вместо

name, grade, score = map(int(),line.split()[-3:])

примените

name, grade, score = map(int, line.split()[-3:])

т.е. int без скобок.


Объяснение:

Функция map() ожидает в качестве первого параметра функцию. int() не функция, а просто целое число 0:

>>> int()
0
→ Ссылка