Помогите с решением задачи. Циклы
Доброй ночи. Второй день пытаюсь решить поставленную задачу. Сам я новичок, практикуюсь ежедневно по несколько часов, но случилась какая-то напасть, не могу решить и все. Не сплю практически, все думаю над решением. Прошу сердечно помочь, растолкуйте пожалуйста, я в тупике.
Задача: Посчитайте произведение всех чисел последовательности, заканчивающейся нулем. Если чисел в последовательности нет – выведите нейтральное для произведения число – 1.
Ввод:
Последовательность чисел, каждое в новой строке
Вывод:
res – произведение всех чисел
Sample Input: 1 2 -1 0 Sample Output: -2
tasks = [1]
n = int(input())
while n:
tasks.append(n)
n = int(input())
if len(tasks) == 1:
print(*tasks)
else:
del tasks[0]
print(abs(int(*tasks[:1])) - abs(int(*tasks[1:(len(tasks))-1])) - abs(int(*tasks[(len(tasks))-1:(len(tasks))])))
Неверное решение #806248107 Python 3.10 Failed test #2 of 3. Runtime error
Error: Traceback (most recent call last): File "/sandbox/main.py", line 10, in print(abs(int(*tasks[:1])) - abs(int(*tasks[1:(len(tasks))-1])) - abs(int(*tasks[(len(tasks))-1:(len(tasks))]))) TypeError: int() takes at most 2 arguments (5 given)
Ответы (2 шт):
Вот обычное умножение.
Так и не понял, что вы пытались написать эти print(abs(int(*tasks[:1])) - abs(int(*tasks[1:(len(tasks))-1])) - abs(int(*tasks[(len(tasks))-1:(len(tasks))])))
numbers = []
while n := int(input('num: ')):
numbers.append(n)
nul = 1
print('mul: ', -1 if len(numbers) == 0 else [nul := nul * n for n in numbers][-1])
Список здесь не нужен, поскольку он усложняет вычисления и не выводится как результат - достаточно одной переменной для формирования произведения.
Если чисел в последовательности нет, то выводится 1 как нейтральное число для произведения, то есть то число, которое не меняет произведение.
m = 1
while True:
x = int(input('Число: '))
if x:
m *= x
else:
break
print(f'Произведение:{m}')
Число: 1
Число: 2
Число: -1
Число: 0
Произведение:-2