Вопрос Задача python на нахождение минимального произведения из 3 значений списка

Регистрация
18 Дек 2013
Сообщения
70
Репутация
0
Спасибо
0
Монет
0
Найдите в последовательности чисел a[1], a[2], … a[n] три элемента, произведение которых минимально. Числа n, a[1], a[2], … a[n] вводятся с клавиатуры. (Отрицательные числа то-же учитываются)(используются только циклы while)(не использовать операторы сортировки и for)
 
# Ввод количества элементов в последовательности
n = int(input("Введите количество элементов в последовательности: "))

# Инициализация списка элементов
elements = []
i = 1

# Ввод элементов последовательности
while i <= n:
element = int(input(f"Введите элемент a[{i}]: "))
elements.append(element)
i += 1

# Инициализация переменных для хранения минимальных элементов
min1 = min2 = min3 = float('inf')

# Поиск трех минимальных элементов
i = 0
while i < n:
if elements < min1:
min3 = min2
min2 = min1
min1 = elements
elif elements < min2:
min3 = min2
min2 = elements
elif elements < min3:
min3 = elements
i += 1

# Вывод результатов
print(f"Три минимальных элемента: {min1}, {min2}, {min3}")

Этот код позволяет ввести последовательность чисел и затем находит три минимальных элемента в этой последовательности.
 
Через while - страшнейший геморрой from functools import reduce

def f(m):
return reduce(lambda x,y: x * y,m)

a = [6,7,3,8,5,2,9]
res = []
i = 0
while i < len(a):
j = 0
while j < len(a):
k = 0
while k < len(a):
if i != j and j != k and k != i:
res += [[a,a[j],a[k]]]
k += 1
j += 1
i += 1

r = list(map(f,res))
print(*res[r.index(min(r))]) 3 5 2
 
Если я понял задачу, которую как всегда понять сложнее чем написать код # Реализация ввода не описана в тз, по умолчанию берётся готовый список
#Но можно и выбрать инпут под нужный ответ
# l = list(map(int, input(),split())) - ввод в одну строку через пробел
# l = list(map(int, input(),split(','))) - ввод в одну строку через запятую


l,k,d = [3,3,6,5,7,-9,3,7,89,235,-457,856,23,-457,679,346,2],0,{}
while k
 
n = int(input())
nums = []
i = 0
while i < n:
a = int(input())
nums.append(a)
i += 1

min1 = min2 = min3 = float('inf')
max1 = max2 = max3 = float('-inf')

i = 0
while i < n:
if nums < min1:
min3 = min2
min2 = min1
min1 = nums
elif nums < min2:
min3 = min2
min2 = nums
elif nums < min3:
min3 = nums
if nums > max1:
max3 = max2
max2 = max1
max1 = nums
elif nums > max2:
max3 = max2
max2 = nums
elif nums > max3:
max3 = nums
i += 1

min_prod = min(min1 * min2 * min3, min1 * max1 * max2, max1 * max2 * max3)
if min_prod == min1 * min2 * min3:
print(min1, min2, min3)
elif min_prod == min1 * max1 * max2:
print( min1, max1, max2)
else:
print(max1, max2, max3)
 
Назад
Сверху