Задать вопрос
@deus97

Есть список [234543]. Как проверить, что соседнее число меньше и больше соседнего на 1?

в данном коде выводит ошибку out of range index в строке if result[x - 1] + 1 == result[x] or result[x + 1] - result[x] == 1:

def more_or_less_one(number: int) -> str:
    
n = str(number)
    A = 1

    result = []
    for i in range(0, len(n), A):
        result.append(int(n[i: i + A]))

    for x in range(1, len(result) +1):
        print(x)
        if result[x - 1] + 1 == result[x] or result[x + 1] - result[x] == 1: 
            retrun True

more_or_less_one(23454)
  • Вопрос задан
  • 236 просмотров
Подписаться 2 Простой 17 комментариев
Решения вопроса 3
@twistfire92
Python backend developer
можно просто вычислить модуль разности соседних чисел. Если не равен 1, возвращать False

def more_or_less_one(a):
	for i in range(len(a)-1):
		if abs(a[i]-a[i+1]) != 1:
			return False
	return True
Ответ написан
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
data = [2,3,4,5,4,3]
print(all([abs(data[i+1] - data[i]) == 1 for i in range(len(data)-1)]))
# True

data = [2,3,4,5,4,7]
print(all([abs(data[i+1] - data[i]) == 1 for i in range(len(data)-1)]))
# False
Ответ написан
Комментировать
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Во!
Чудовищно, но в точности соответствует условию.
def more_or_less_one(number: int) -> str:
    return str(not any([abs(int(str(number)[x]) - int(str(number)[x+1]))-1 for x in range(len(str(number))-1)]))
            
data = 234543
print(more_or_less_one(data))
data = 234564
print(more_or_less_one(data))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы