Почему я получаю сообщение об ошибке «индекс списка вне диапазона» в этой программе? - PullRequest
0 голосов
/ 01 марта 2020

Я - студент относительно новичок в кодировании, использую Python на уровне GCSE, и я изо всех сил пытаюсь понять, в чем я ошибаюсь, с этим фрагментом кода, который используется для коррекции различных оценок учащихся с помощью поправочного коэффициента. Почему я получаю сообщение об ошибке, когда в обоих списках одинаковое количество элементов?

wrongMark = [72,75,23,54,48]
adFactor = [1.25,1.1,1.8,1.3,0.9]
newMark = []
examTable = [["Doc","Sarah","Jar-Jar","Jake","Ben"],
             wrongMark,
             adFactor
             ]
#print(examTable)

for item in wrongMark:
    results = item*adFactor[item]
    newMark.append(results)
print(newMark)

Ответы [ 5 ]

2 голосов
/ 01 марта 2020

Внутри вашего для l oop поместите строку в print(item). Вы увидите, что это значение в неправильном маркере, а не индекс. Вы, вероятно, хотите

For index in range(len(wrongMark)):
0 голосов
/ 01 марта 2020

Ошибка в коде: results = item * adFactor [item] Проще заметить ошибку, когда вы представляете, что первая итерация вашего l oop равна: result = 72 * adFactor [72] Вы получаете ошибка выхода из индекса, поскольку в списке adFactor нет 72-го члена.

0 голосов
/ 01 марта 2020

вам нужно использовать индекс во время итерации. Вы используете значение 72 для первой итерации. Вот почему это вне диапазона ошибки. Используйте что-то вроде: для idx в диапазоне (len (falseMark)): results = falseMark [idx] * adFactor [idx] newMark.append (results)

0 голосов
/ 01 марта 2020

Проблема в этой строке:

   results = item*adFactor[item]

Для первой итерации для l oop вы пытаетесь получить доступ к 72-й ячейке в списке adFactor.

Вот почему вы получаете «индекс списка вне диапазона»

0 голосов
/ 01 марта 2020

Ошибка в том, что вы используете for item in wrongMark. На первой итерации l oop назначит элемент со значением 75, а список adFactor не содержит 75 элементов;)

Один из способов решить эту проблему - просто изменить l oop на :

for item in range(len(wrongMark)):
    results = wrongMark[item]*adFactor[item]
    newMark.append(results)
...