Конкретно в вашем коде ошибка такая:
x = int(input('Введите число:'))
def array(x):
global a
a = []
while x > 0:
b = x % 10
a.append(b)
x //= 10
return list(reversed(a)) <----------- этот return стоит внутри цикла и, поэтому, он вернёт только одну цифру. Это ошибка.
print(array(x))
for i in range(len(a)): <------------ из-за a[i+1] вы нарушили граничные значения, будет ошибка.
while i<=1: <---------------------- этот цикл зациклился, т.к. вы не изменяете i внутри цикла while.
И если первые две цифры не будут равны, то ничего не произойдёт, бесконечный while.
if a[i] == a[i+1]:
print('да')
break
else:
print("нет")
Как бы я предложила бы улучшить этот код:
- Хорошо подумать и написать алгоритм на листочке: что есть (данные), что нужно сделать (действия), что должно получиться (данные).
- Заменить while на for (с другим счётчиком, разумеется), потому что тема while'ов у вас не раскрыта :)
- Изучить область работы break: какой цикл остановится. На примере вашего кода break не останавливает for, если что.
- Аналогично изучить работу return
- Изучить тему "соседние элементы в массиве", "границы в массиве", "как изменять границы если индексы i+1,i+2, i-1, i-3"