Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 19, 2020 18:03:13

Zorger
Зарегистрирован: 2020-08-19
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Школьная задачка :)

Здравствуйте, сорри за наглеж
Пытаюсь решить проблему с 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 (Авг. 19, 2020 18:07:30)

Офлайн

#2 Авг. 19, 2020 18:08:53

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Школьная задачка :)

Zorger
Дайте пожалуйста условие задачи, в общем то непонятно, что вы делаете вообще



Отредактировано FishHook (Авг. 20, 2020 11:11:09)

Офлайн

#3 Авг. 19, 2020 18:10:49

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Школьная задачка :)

 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

Отредактировано marvellik (Авг. 19, 2020 18:18:38)

Офлайн

#4 Авг. 19, 2020 18:36:36

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Школьная задачка :)

 if marks[I] == 2 and i < (Len(marks) -1 )
чтоли?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#5 Авг. 19, 2020 20:27:43

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Школьная задачка :)

ZerG
if marks == 2 and i < (Len(marks) -1 )
наверно просто
 and i < (Len(marks))
>>> 8<9
True
>>> 9<9
False
>>>
а 8+1 = 9 как раз получаем последний индекс

Отредактировано marvellik (Авг. 19, 2020 20:28:00)

Офлайн

#6 Авг. 20, 2020 00:11:06

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Школьная задачка :)

не хотел менять условия.



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version