В списке, состоящем из положительных и отрицательных целых чисел, найти
первый, третий и шестой положительные элементы и вычислить их произведение.
Задача усложнена тем, что, например, третий по счету положительный элемент
может быть далеко не третим в списке, а каким угодно.
**Основная часть алгоритма решения задачи:**
1. Ввести в программу счетчик положительных элементов (j). Присвоить ему значение 1 (т.е. он указывает на первый положительный элемент).
2. Перебирать элементы массива-списка по-очереди. Если очередной элемент положительный и счетчик положительных элементов равен 1 или 3 или 6, то сохранить в соответствующей переменной индекс данного элемента. Кроме того, если шестой положительный элемент найден, то нет смысла продолжать цикл дальше и можно его завершить (оператор `break`).
3. Если в массиве был найден шестой положительный элемент (первый и третий тогда точно найдены), то вычислить произведение.
В программе ниже для заполнения списка используется так называемый генератор.
В данном случае выражение `round(random.random() * 100) - 50` используется в
цикле, который выполняется 20 раз. И на каждой итерации цикла получившееся
число помещается в список a.
import random
a = [round(random.random() * 100) - 50 for i in range(20)]
print(a)
i = j = 0
i1 = i3 = i6 = -1
while i < 20:
while i < 20:
if a[i] > 0:
if j == 1:
i1 = i
elif j == 3:
i3 = i
elif j == 6:
i6 = i
break
j += 1
i += 1
if i6 > 0:
mult = a[i1] * a[i3] * a[i6]
print("Индексы элементов:", i1, i3, i6)
print("%d * %d * %d = %d" % (a[i1], a[i3], a[i6], mult))
[-45, 30, 31, -40, 22, -48, -18, -24, -21, 25, -38, 43, 30, 15, -33, -41, -8, 29, 26, 24]
Индексы элементов: 1 4 12
30 * 22 * 30 = 19800