Список индексов вне диапазона в Python - PullRequest
0 голосов
/ 12 сентября 2018
def Entekhab3_fun():
    h = 0
    Max = 1
    while(h <= 10):
        if(Montakhabha[h] == None):
            break
        elif(Montakhabha[h] > Max):
            Max = Montakhabha[h]
        elif(Montakhabha[h] == Max):
            Max = Montakhabha[h]
        else:
            Max = Max
        h += 1
    return(Max)

Это часть моего кода, на которую ссылается компилятор, и я не могу понять, что с ним не так, но когда я его скомпилирую, он говорит:

indexerror: list index outдиапазона

1 Ответ

0 голосов
/ 12 сентября 2018

Единственная возможная причина в том, что Montakhabha имеет менее 11 элементов.Будьте внимательны, если ваше состояние h <= 10, поэтому вы проверяете также Montakhabha[10] в своем коде.

Самое безопасное было бы изменить это значение на

while h < len(Montakhabha)

. Некоторые примечания:

  • первая проверка, вероятно, должна быть continue вместо break (как и последнее назначение Max=Max).
  • использовать x is None вместо x==None.Это безопасно, потому что None - это одноэлементное значение.
  • 2-е и 3-е условия делают одно и то же

В целом, кажется, что вы пытаетесь сделать это

max_value = 0
for element Montakhabha:
    if element > max_value:
         max_value = element
...