Проблема в том, как вы организовали список record
.
Эта строка кода ожидает, что каждый элемент в record
будет подсписком с тремя элементами: имя, оценка по математике и научная оценка.
for name, math_grade, science_grade in record
Таким образом, ожидается, что record
будет примерно таким:
record = [
["Jim", "B", "C"],
["Mary", "A", "B"],
]
Но вместо этого вы сделали record
подсписком имен, затем подсписок оценок по математике, затем подсписок оценок по естествознанию:
record = [
["Jim", "Mary"],
["B", "A"],
["C", "B"]
]
Итак, когда код извлекает первый элемент в record
, это список только из двух элементов, в котором вы сказал ожидать троих. (Если бы у вас было трое учеников, код «работал бы», но не так, как вы хотели.)
Так что вам нужно либо изменить, как вы помещаете вещи в record
, чтобы соответствовать тому, как вы тянете или измените способ их извлечения.
На самом деле кажется, что record
- это просто временная переменная, которая используется только для построения Class_Record
. Если это правда, вы можете просто построить Class_Record
напрямую:
Class_Record = {}
while (N != 0):
name = input('Enter name:')
math_grade = input('Enter grade in math:')
science_grade = input('Enter grade in science:')
Class_Record[name] = {'math_grade': math_grade, 'science_grade': science_grade)
N = N - 1