Вылазит ошибка IndexError: list index out of range

point = input() 
point = point.split()
point = list(map(int, point))

i=0

while (len(point))>(len(point)-1):
    if point[i] == point[i+1] and (point[1] == point[-1]):
        print('Yes')
        quit()
    else:
        i+=1

print('No')

решаю задачку, вот только не пойму почему вылазит ошибка

Traceback (most recent call last):
  File "source.py", line 8, in <module>
    if point[i] == point[i+1] and (point[1] == point[-1]):
IndexError: list index out of range

Ответы (2 шт):

Автор решения: Danis

(len(point))>(len(point)-1) всегда True

point = input() 
point = point.split()
point = list(map(int, point))

i=0

while i < len(point) - 1:
    if point[i] == point[i+1] and (point[1] == point[-1]):
        print('Yes')
        quit()
    else:
        i+=1

print('No')
→ Ссылка
Автор решения: n1tr0xs
  1. Условие вашего цикла всегда истинно, замените его на это i < len(point)-1
  2. Придерживайтесь единого стиля кодирования. Если взяли 2ю часть логического выражения в скобки, то возьмите и 1ю в скобки (point[i] == point[i+1]) and (point[1] == point[-1]).
  3. else можно не писать, т.к. в случае выполнения условия, вы сразу выйдите из программы.
  4. Первые три строки обычно записывают "вместе".
  5. len(point)-1 лучше сохранить в переменной, чтобы не пересчитывать, что называется "за зря".
  6. Еще проверку point[1] == point[-1] можно вынести за цикл (это несколько оптимизирует работу программы).

Финал:

point = list(map(int, input().split()))
if point[1] == point[-1]:
    i, max_i = 0, len(point) - 1
    while i < max_i:
        if point[i] == point[i+1]:
            print('Yes')
            quit()
        i += 1

print('No')
→ Ссылка