Форум сайта python.su
0
Доброго времени суток.
Необходимо вывести пары соседних друг с другом чисел одного знака.
Код написан, однако, код не выполняет нужную задачу. В чем моя ошибка?
first = [-1, -2, 3, 4, -1] #список n = 0 for d in first: #перебирает все числа в списке if n == len(first) - 1: #условие, чтобы индекс не выходил за пределы размера списка continue elif first[n] and first[n + 1] >= 0: #блок условия print(first[n], first[n + 1], sep=" and ") n += 1 elif first[n] and first[n + 1] < 0: #блок условия print(first[n], first[n + 1], sep=" and ") n += 1
if n == len(first) - 1: continue
Отредактировано Dorum (Март 4, 2020 19:45:41)
Офлайн
186
> Необходимо вывести пары соседних друг с другом чисел одного знака.
Это вот так?
>>> first = [-1, -2, 3, 4, -1] >>> [ (x,y) for x,y in zip(first, first[1:]) if x>0 and y>0 or x<0 and y<0 ] [(-1, -2), (3, 4)]
Офлайн
0
RodegastРезультат верный у Вас, но можно это расписать попроще? Без использования кортежей, словарей и тд.
> Необходимо вывести пары соседних друг с другом чисел одного знака. Это вот так?
Офлайн
0
first = [-1, -2, 3, 4, -1] #список n = 0 for d in first: #перебирает все числа в списке if n == len(first) - 1: #условие, чтобы индекс не выходил за пределы размера списка continue elif first[n] >= 0 and first[n + 1] >= 0 or first[n] < 0 and first[n + 1] < 0: #блок условия print(first[n], first[n + 1], sep=" and ") n += 1
Офлайн
186
Ты должен перебирать пары, а не элементы списка по отдельности, тогда и с индексом проблем не будет. Что бы получить список пар используется функция zip:
>>> first = [-1, -2, 3, 4, -1,-5] >>> list(zip(first, first[1::])) [(-1, -2), (-2, 3), (3, 4), (4, -1), (-1, -5)]
for x,y in zip(first, first[1::]): if x>0 and y>0 or x<0 and y<0: print(x,y)
Отредактировано Rodegast (Март 4, 2020 20:46:36)
Офлайн
0
RodegastЗа функцию zip спасибо. По неопытности перепутал ее со словарями.
Ты должен перебирать пары, а не элементы списка по отдельности, тогда и с индексом проблем не будет. Что бы получить список пар используется функция zip:
Офлайн
73
if x>0 and y>0 or x<0 and y<0:
if x * y > 0 :
first = [-1, -2, 3, 4, -1] for i in range(len(first) - 1): if first[i] * first[i+1] > 0 : print(first[i], first[i+1])
Отредактировано marvellik (Март 6, 2020 19:38:56)
Офлайн