Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 2, 2014 21:43:27

sw0rl0k
Зарегистрирован: 2013-10-21
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Очередной IndexError: list index out of range

Дана последовательность 5 натуральных чисел. Надо определить, есть ли одинаковые рядом стоящие числа, и если есть, вывести порядковые номера первой пары.

Вот какой код у меня получился(сильно не пинайте, осваивал питон в процессе написания)

A = []
print("Задайте последовательность натуральных чисел")
for k in range(1,6):
    x = int(input("A[" + str(k) + "]= "))
    A.append(x)
for i in A:
    if A[i] == A[i+1]:
        p1 = i
        p2 = i+1
        break
if p1 != p2:
    print("Порядковые номера чисел: " + str(p1+1) + " и " + str(p2+1))
else:
    print("Нет таких чисел")

Если задать последовательность, в которой есть два одинаковых стоящих рядом числа, то код отработает корректно(по крайней мере покажет ожидаемый результат), а вот если ввести разные числа без повторения, то выйдет ошибка
IndexError: list index out of range

Я понимаю, что ошибка связанна с тем, что у меня кодом
if A[i] == A[i+1]:
выходит за пределы моего списка
range(1,6)
. И я даже знаю, как решить такую проблему на паскале. Но мне не хватает знаний что бы решить её на питоне. Потому прошу помощи!

Отредактировано sw0rl0k (Июнь 2, 2014 21:45:41)

Офлайн

#2 Июнь 2, 2014 23:28:51

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Очередной IndexError: list index out of range

Офлайн

#3 Июнь 3, 2014 00:45:17

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Очередной IndexError: list index out of range

>>> def f(lst):
...     for i in range(len(lst) - 1):
...         if lst[i] == lst[i + 1]:
...             return i + 1, i + 2
... 
>>> f([1, 2, 3, 4, 5])
>>> f([1, 1, 3, 4, 5])
(1, 2)
>>> f([1, 2, 2, 2, 5])
(2, 3)
>>> f([1, 1, 3, 4, 4])
(1, 2)
>>> f([1, 2, 3, 4, 4])
(4, 5)
>>>

sw0rl0k
print("Задайте последовательность натуральных чисел")
Пользователя может и не быть за компьютером. Данные могут прийти по сети.



Офлайн

#4 Июнь 3, 2014 07:22:08

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Очередной IndexError: list index out of range

def neighbours(l):
    for i, (a, b) in enumerate(zip(l[:-1], l[1:])):
        if a == b:
            return i, i + 1

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version