Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Python помогите пожалуйста

Влад Артёмов Ученик (159), на голосовании 5 месяцев назад
Ниже дана программа, которая выводит на экран количество и произведение неотрицательных чисел заданного списка из 10 элементов.

lst = [4, 5, 8, -12, 10, -5, 1, 7, -93, 1]
count = 0
multiplication = 1
for i in range(1, 10):
if lst[i] >= 0:
multiplication *= lst[i]
count += 1
print(count, multiplication)

Так, для списка, хранящегося в переменной lst, алгоритм должен вывести результат: 7 11200.

В указанном алгоритме допущена ошибка в одной строке кода. Найдите и исправьте ее. В ответе введите исправленную строку кода.
Голосование за лучший ответ
Татьяна Просветленный (36374) 6 месяцев назад
В указанном алгоритме ошибка находится в строке:
 for i in range(1, 10): 
Она должна быть заменена на:
 for i in range(10): 
Так как индексация списка начинается с 0 и до 9 (включительно), нужно перебирать все элементы списка от 0 до 9. Вот исправленная программа целиком:
 lst = [4, 5, 8, -12, 10, -5, 1, 7, -93, 1]  
count = 0
multiplication = 1
for i in range(10):
if lst[i] >= 0:
multiplication *= lst[i]
count += 1
print(count, multiplication)
Можно записать короче и оптимизировать этот код
  
lst = [4, 5, 8, -12, 10, -5, 1, 7, -93, 1]
positive_numbers = [num for num in lst if num >= 0]
print(len(positive_numbers), (1 if len(positive_numbers) == 0 else __import__("functools").reduce(lambda x, y: x * y, positive_numbers)))
Похожие вопросы