Вылазит ошибка 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
→ Ссылка
- Условие вашего цикла всегда истинно, замените его на это
i < len(point)-1 - Придерживайтесь единого стиля кодирования. Если взяли 2ю часть логического выражения в скобки, то возьмите и 1ю в скобки
(point[i] == point[i+1]) and (point[1] == point[-1]). elseможно не писать, т.к. в случае выполнения условия, вы сразу выйдите из программы.- Первые три строки обычно записывают "вместе".
len(point)-1лучше сохранить в переменной, чтобы не пересчитывать, что называется "за зря".- Еще проверку
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')