Python

Python Обработка данных в цикле. 7 класс

Дана непустая последовательность целых чисел, оканчивающаяся нулем. Ноль в последовательность не входит, служит признаком ее окончания. Найти произведение последних цифр всех чисел последовательности, больших числа 13. Если таких чисел нет, то выведите 0.

Входные данные
На вход подаются числа последовательности (все числа не больше 100 по модулю). Ноль - признак окончания ввода.

Выходные данные
Выведите ответ на задачу (гарантируется, что ответ всегда меньше, чем 2в 64 степени).
list;[;break запрещено
напишите программу
A.g. .............
A.g. .............
98
Элементарно (каждое число вводится с новой строки):
 a, p, yes = 1, 1, 0 
while a:
a = int(input('»»» '))
if a>13: yes += 1; p *= a % 10
print(p if yes else 0)
Макар Макар
Макар Макар
66 572
Лучший ответ
Самый очевидный способ - через math.prod :
 from math import prod
ns = (int(s) for s in iter(input, '0'))
nf = (n % 10 for n in ns if n > 13)
first = next(nf, None)
print(first * prod(nf) if first != None else 0)

Если math.prod по каким-то причинам не устраивает, то через functools.reduce:
 from functools import reduce
ns = (int(s) for s in iter(input, '0'))
nf = (n % 10 for n in ns if n > 13)
first = next(nf, None)
print((first % 10) * reduce(int.__mul__, nf, 1) if first != None else 0)

Если преподаватель вообще жёстко настроен против стандартных функций свёртки, то можно реализовать закат Солнца вручную через итератор с побочным эффектом:
 ns = (int(s) for s in iter(input, '0'))
p = 1
*_, last = (p := p * (n % 10) for n in ns if n > 13)
print(last if last != None else 0)
AB
Anton Baluk
87 571
Алексей Ячменев "Если таких чисел нет, то выведите 0"
Проблема аналогична предыдущей . И решение аналогично.

Вот только из-за нестандартного условия (произведение нулевого числа сомножителей обычно полагается равным 1) код слегка усложнился.
 prod = None  
while (val := int(input())) != 0:
if val > 13:
if prod is None: prod = 1
prod *= val % 10;
if prod is None: prod = 0
print(prod)
Sergey Dolmatov
Sergey Dolmatov
12 091
lastNumProduct = 1
while True:
print("Введите элемент")
x = int(input())
if x == 0:
break
if x>13:
lastNumProduct *= x%10
if lastNumProduct == 1:
print(0)
else:
print(lastNumProduct)
Anton Baluk break, break, как это мило, break, break, без перерыва.
Читать условие задачи перед тем, как ваять говнокод? Не, не слышал.
product = 1 # инициализируем переменную для произведения

while True: # бесконечный цикл
num = int(input()) # считываем очередное число
if num == 0: # если введен ноль, значит последовательность закончилась
break # прерываем цикл
if num > 13: # если число больше 13, умножаем его последнюю цифру на произведение
last_digit = num % 10 # находим последнюю цифру числа
product *= last_digit # умножаем ее на произведение
if product == 1: # если ни одно число не удовлетворяло условию, выводим 0
print(0)
else:
print(product) # выводим произведение
A.g. ............. спасибо
Sergey Dolmatov
list;[;break запрещено

 break # прерываем цикл 
Anton Baluk Опять нейросеть жидко обделалась. Нельзя с брейком-то.