Проверить числовой ряд на чередование знака
Программа запрашивает число n. Далее, мы вводим n чисел и сохраняем все введенные числа в массив. Программа должна проверить чередуются ли в нем положительные и отрицательные числа. Если чередуются, то вывести YES, иначе NO.
Ввод:
6
2 -8 1 5 3 22
Вывод:
NO
Ввод:
6
1 -2 2 -4 3 -20
Вывод:
YES
Не могу понять как прописать это в условие - "чередуются ли в нем положительные и отрицательные числа".
Ответы (3 шт):
Автор решения: ПИТОНИСТ версия-3-8
→ Ссылка
Приведу алгоритм, код напишите сами:
- если 0 в списке, то сразу пишем
NO iидёт от 0 до (длины списка - 1):- если
i-ый элемент, делённый наi+1элемент больше нуля, то пишемNOи выходим из цикла
- если
- если мы не писали
NO, то пишемYES
если мы не писали
NO, то пишемYES
Это вы можете сделать с помощью флажка с логическим значением
Автор решения: XFaost
→ Ссылка
def check_num(num, next_is_negative):
if next_is_negative and num < 0:
return True
elif not next_is_negative and num > 0:
return True
return False
def is_alternates(l):
# Смотрим каким должно быть второе число
# Если первое больше 0, то второе должно быть меньше и наоборот
next_is_negative = l[0] > 0
for i in range(1, len(l)):
num = l[i]
if not check_num(num, next_is_negative):
return False
# Теперь у следующего числа должен быть противоположный знак
next_is_negative = not next_is_negative
return True
l = [6, 2, -8, 1, 5, 3, 22]
print(is_alternates(l)) # False
l = [-6, -2, 8, -1, -5, -3, -22]
print(is_alternates(l)) # False
l = [6, -2, 8, -1, 5, -3, 22]
print(is_alternates(l)) # True
l = [-6, 2, -8, 1, -5, 3, -22]
print(is_alternates(l)) # True
Автор решения: Gemini
→ Ссылка
a = []
n = int(input())
for i in range(n):
a.append(int(input()))
a = [abs(x) for x in a]
b = set(a)
if len(a) == len(b):
print('NO')
else:
print('YES')