Проверить последовательность на чередование знаков

Рейтинг: 0Ответов: 2Опубликовано: 26.02.2023

Вводится последовательность целых чисел оканчивающиеся нулём. Нужно определить чередуются ли в ней знаки. Например 1 -2 6 -2 0 чередуются, а в последовательности 1 4 -2 -1 0 не чередуются. Написал вот тут чутка а как проверить на чередование понять не могу

a = list(map(int, input().split()))
for i in range(len(a)):
    if . and a[-1] == 0:
        print('Чередуются')
    elif  a[-1] != 0:
        print('Не чередуются')

Ответы

▲ 0Принят

Так как ноль это не положительное и не отрицательное число предполагаю, что его можно считать и положительным и отрицательным. Тогда код такой:

numbers_1 = [1, -2, 6, -2, 0]
numbers_2 = [1, 4, -2, -1, 0]
numbers_3 = [0, 4, -2, 1, 0]


def numbersPars(numbers):
    for i in range(len(numbers)):
        if (numbers[i] < 0 and numbers[i+1] < 0) or (numbers[i] > 0 and numbers[i+1] > 0):
            return 'Не чередуются'

    return 'Чередуются'


print(numbersPars(numbers_1)) # Чередуются
print(numbersPars(numbers_2)) # Не чередуются
print(numbersPars(numbers_3)) # Чередуются
▲ 0

Ввод входных данных можно ограничить 0, затем просто проверить, что попарные произведения больше 0, т.е. имеют одинаковые знаки и не чередуются:

a = [i for i in iter(lambda x=iter([int(n) for n in input().split()]): next(x),0)]
print(a)
prev = None
for i in a:
    if prev != None and i * prev > 0:
        print("Не чередуются")
        break
    prev = i
else:
    print("Чередуются")
1 -1 2 -2 -2 3 0
[1, -1, 2, -2, -2, 3]
Не чередуются
-2 1 -1 2 0 3
[-2, 1, -1, 2]
Чередуются