Найти - Пользователи
Полная версия: Очередной IndexError: list index out of range
Начало » Python для новичков » Очередной IndexError: list index out of range
1
sw0rl0k
Дана последовательность 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)
. И я даже знаю, как решить такую проблему на паскале. Но мне не хватает знаний что бы решить её на питоне. Потому прошу помощи!
Shaman
http://younglinux.info/python/for.php
py.user.next
>>> 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("Задайте последовательность натуральных чисел")
Пользователя может и не быть за компьютером. Данные могут прийти по сети.
Shaman
def neighbours(l):
    for i, (a, b) in enumerate(zip(l[:-1], l[1:])):
        if a == b:
            return i, i + 1
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