2016-01-22 4 views
0

Я написал эту функцию:Index ошибка: индекс присваивание списка из диапазона

def replace(self, pos, note): 
    """ 
     Replace the score of the participant at the given position with a new score 
     Input: pos, note - integer 
     Output: the old score was replaced 
    """ 


    scores = self.repo.getAll() 

    scores[pos] = note 
    return scores 

Где GETALL определен в классе participantRepo следующим образом:

def getAll(self): 
     return self._participantList[:]. 

Моя проблема заключается в том, что я не понимаю, ошибка Я продолжаю получать

ответ

0

Если в списке еще нет элементов pos+1, list[pos] попытается присвоить note индексу вне список. Вы можете использовать метод append() для добавления элементов в список.

0

Если этот код

scores[pos] = note 

вызывает эту ошибку:

Index error: list assignment index out of range 

Вы могли бы интерпретировать это следующим образом:

  1. индекс присваивания списка относится к «оценке [позы знак равно 'pos' - индекс; «score» - это имя списка. Вы присваиваете значение «примечание» списку в этом индексе.
  2. вне допустимого диапазона означает,

Один из способов отладки:

Добавить оператор печати до назначения списка, чтобы показать вам значение «поз». Если вы знаете допустимый диапазон индексов списка, это может помочь вам отслеживать, где и почему возникает эта ошибка.

0

Ваш код должен обрабатывать out of bound access следующим

def replace(self, pos, note): 
""" 
Replace the score of the participant at the given position with a new score 
Input: pos, note - integer 
Output: the old score was replaced 
""" 
    scores = self.repo.getAll() 

    if pos < len(scores): 
     scores[pos] = note 
    else: throw IndexError 
    return scores 

`

Смежные вопросы