Top.Mail.Ru
Ответы
Аватар пользователя
7мес
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Нужна помощь, задача по python

Помогите с задачей пжл, (я полный чайник), чет так и так пробую, все пишет, что ошибка (TypeError: unsupported operand type(s) for +: 'int' and 'list')
Затык именно в вычислении среднего балла:
mid_grades=sum(grades)/len(grades)

На вход даны следующие данные:
1.Список: grades = [[5, 3, 3, 5, 4], [2, 2, 2, 3], [4, 5, 5, 2], [4, 4, 3], [5, 5, 5, 4, 5]]
2.Множество: students = {'Johnny', 'Bilbo', 'Steve', 'Khendrik', 'Aaron'}
Список grades содержит списки оценок для каждого ученика в алфавитном порядке.
Например: 'Aaron' - [5, 3, 3, 5, 4]
Множество students содержит неупорядоченную последовательность имён всех учеников в классе.
Напишите программу, которая составляет словарь, используя grades и students, где ключом будет имя ученика, а значением - его средний балл.

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
7мес

У вас mid_grades=sum(grades)/len(grades) - это список списков, то есть суммируются списки, а не элементы списков.
И неверная идея со множеством фамилий, из множества они будут извлекаться в неизвестном порядке, то есть оценки отвяжутся от фамилий, список оценок не будет соответствовать фамилии.

12345
 grades = [[5, 3, 3, 5, 4], [2, 2, 2, 3], [4, 5, 5, 2], [4, 4, 3], [5, 5, 5, 4, 5]]  
for i in grades: 
    mid_grades=sum(i)/len(i) 
    print(mid_grades) 
 
Аватар пользователя
Ученик
7мес

# Данные
grades = [[5, 3, 3, 5, 4], [2, 2, 2, 3], [4, 5, 5, 2], [4, 4, 3], [5, 5, 5, 4, 5]]
students = {'Johnny', 'Bilbo', 'Steve', 'Khendrik', 'Aaron'}

# Приводим список студентов к упорядоченному списку
students_list = sorted(students)

# Создаем словарь для хранения средних баллов
average_grades = {}

# Расчет среднего балла для каждого студента
for student, grade_list in zip(students_list, grades):
average_grades[student] = sum(grade_list) / len(grade_list)

# Вывод результата
print(average_grades)

Аватар пользователя
7мес

Скорее всего len возвращается как str, попробуй отдельную переменую int создать и выводить их значения до операции деления...