Форум сайта python.su
0
Дан список чисел. Если в нем есть два соседних элемента одного знака, выведите эти числа. Если соседних элементов одного знака нет — не выводите ничего. Если таких пар соседей несколько — выведите первую пару.
a = [int(i) for i in input().split()] for i in range(1, len(a)): if a[i] > 0 and a[i - 1] > 0: print(a[i - 1], a[i]) elif a[i] < 0 and a[i - 1] < 0: print(a[i - 1], a[i])
Офлайн
6
a = [int(i) for i in input().split()] for i in range(1, len(a)): if (a[i] > 0 and a[i - 1] > 0) or (a[i] < 0 and a[i - 1] < 0): print(a[i - 1], a[i]) break
Офлайн
857
Надо проверять “либо они оба отрицательные, либо нет”. Учесть, что список может быть пустым, а может содержать только одно число.
Офлайн
0
Спасибо!!!
if a[i - 1] * a[i] > 0:
Офлайн
857
dima757Это ловушка и ты в неё попал. {(0, 0), (0, 1), (1, 0)} - подходящие пары. Не используй там умножение, потому что дальше у тебя будет >= 0 и ты попадёшь на (0, -1).
оказывается можно чуть короче
Офлайн
0
py.user.next
Спасибо!!! буду в курсе
Офлайн