Ошибка: 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 шт):
Вместо
name, grade, score = map(int(),line.split()[-3:])
примените
name, grade, score = map(int, line.split()[-3:])
т.е. int без скобок.
Объяснение:
Функция map() ожидает в качестве первого параметра функцию. int() не функция, а просто целое число 0:
>>> int()
0