2016-12-14 3 views

ответ

3

Поскольку вы используете значения, содержащиеся в списке, как индексы; mark принимает значения 90, 80, ..., 100. Подписка midterm[90] явно за пределами границ.

Для перебора элементов, а также с ручкой на позиции, Python предлагает enumerate, который обеспечивает индекс наряду с текущим значением:

midterms = [90, 80, 89, 87, 97, 100] 
for ind, mark in enumerate(midterms): 
    newMark = mark + 2 
    midterms[ind] = newMark 
print(midterms) 

Это, по сути, позволяет перебору списка и меняющегося это легко.

+0

Я думаю, вы также можете использовать 'диапазон (Len (промежуточные выборы))' функцию. – Jerrybibo

+0

@Jerrybibo, вы могли бы быть действительно не должны. Именно поэтому существует 'enumerate'. –

1

Другой способ подумать об этом, если вы новичок в python (я не знал о перечислении в качестве новичка), - это использовать предложение Джеррибибо. Код для этого будет выглядеть следующим образом:

midterms = [90, 80, 89, 87, 97, 100] 
for i in range(len(midterms)): 
    newMark = midterms[i] + 2 
    midterms[i] = newMark 
print(midterms) 
0

Jim Fasarakis-Hilliard и я разделяю тот же ответ. Другой обходной путь для вашего кода заключается в следующем:

midterms = [90, 80, 89, 87, 97, 100] 
print [mark+2 for mark in midterms] 

, который должен также дать

[92, 82, 91, 89, 99, 102]