Нужен алгоритм, который понимает, что знак меняется python

Я новичек в python и нужно узнать сколько раз в последовательности чисел меняется знак

import math
s = " "
Kol = 0
print ('Введите количество чисел')
n = int(input())
print('Введите первое число последовательности')
k = float(input())
for i in range(n-1):
    print('Введите число последовательности')
    z = float(input())
    if (ТУТ ДОЛЖНО БЫТЬ УСЛОВИЕ, которое понимает что знак сменился):
        Kol = Kol + 1
        print('знак поменялся')
if Kol > 0:
    print('\nЗнак поменялся ', "%5.2f" %(Kol), 'раз')
else:
    print('Знак не менялся');

Ответы (3 шт):

Автор решения: eri

Смена знаков определяется логическим выражением (a<0)^(b<0).

from functools import reduce

n = 0
def change(a,b):
    global n
    if (a<0)^(b<0): n+=1
    return b

reduce(change,arr)
arr = [1,-5,5,4,-8]
assert n == 3

reduce попарно применяет функцию к прошлому результату и следующему элементу, это можно переписать на for или while

nonlocal b - если n объявленно в функции

→ Ссылка
Автор решения: Xander

Ну и для любителей однострочников:

from itertools import groupby


data = [-1, 5, 6, 7, -2, -4, -6, 1, 2, 3]

groups = len(list(groupby(data, key=lambda x: -1 if x <0 else 1)))

print('Знак сменился {} раз'.format(groups-1))
→ Ссылка
Автор решения: splash58

Если однострочник

sum(a*b < 0 for a,b in zip(data[1:],data[:-1]))
→ Ссылка