Найти - Пользователи
Полная версия: Школьная задачка :)
Начало » Python для новичков » Школьная задачка :)
1
Zorger
Здравствуйте, сорри за наглеж
Пытаюсь решить проблему с i, который при при конечной 2 выходит за границу массива
Уже попытался перестроить цикл, чтобы он не утыкался в эту последнюю 2, но все бестолку

 import random
marks = []
for i in range (1,11):
     marks.append (random.randint(2,5))
print (marks, end=' ')
summ=0
for i in range (1, len(marks)):
    if marks [i] == 2 and i == len(marks) :
        summ += marks[i]
    elif marks[i]== 2 and i != len(marks):
        if marks [i+1] == 2:
            summ += 0
        elif marks[i+1] != 2:
            summ+= marks [i]
    else:
        summ+= marks[i]
print ()
print (int (summ // len(marks)))
FishHook
Zorger
Дайте пожалуйста условие задачи, в общем то непонятно, что вы делаете вообще
marvellik
 if marks [i+1] == 2:
а когда i равно длине списка то как проверить несуществующий элемент i+1? о чем вам и говорит ошибка.
 >>> a = [5, 3, 2, 2, 2, 3, 5, 2, 3, 3]
>>> len(a)
10
>>> a [10]
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    a [10]
IndexError: list index out of range
>>>
вот вам пример
в условии
 elif marks[i]== 2 and i != len(marks):
когда i == 9 вторая часть срабатывает но
 if marks [i+1] == 2:
выдаст ошибку потому как индекса 10 (9+1) в списке нет. вы забыли что индексы начинаются с нуля и последний в списке это 9 но элементов 10 как выдает функция len
ZerG
 if marks[I] == 2 and i < (Len(marks) -1 )
чтоли?
marvellik
ZerG
if marks == 2 and i < (Len(marks) -1 )
наверно просто
 and i < (Len(marks))
>>> 8<9
True
>>> 9<9
False
>>>
а 8+1 = 9 как раз получаем последний индекс
ZerG
не хотел менять условия.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB