Програмирование 7 класс
Дана непустая последовательность целых чисел, оканчивающаяся нулем. Ноль в последовательность не входит, служит признаком ее окончания. Найти количество чисел последовательности, которые больше первого введенного числа.
Входные данные
На вход поступают числа последовательности, по одному числу в строке. Ноль - признак окончания ввода.
Выходные данные
Выведите ответ на задачу.
Запрещенные операторы: break;list;[
напишите програмуу на питон
Без хранения элементов в памяти, будь то в виде списка (list) или кортежа (tuple). Полностью однопроходный алгоритм. Без императивных циклов (и соответственно, без break и т.п.). И без дублирования кода.
ns = (int(s) for s in iter(input, '0'))
first = next(ns)
print(sum(1 for k in ns if k > first))
number = int(input("Число'))
count = 0
ans = 100
while ans != 0:
ans = int(input())
if ans > number:
count += 1
print(count)
Если честно, не совсем понял задачу, но помог чем смог. Сорри)
print((lambda x: sum(v > x.__getitem__(0) for v in x))(tuple(map(int, iter(input, '0')))))
# Считываем первое число и инициализируем переменную-счетчик
first_num = int(input())
count = 0
# Считываем остальные числа и проверяем, больше ли они первого числа
while True:
num = int(input())
if num == 0: # Если введен ноль, прерываем цикл
break
elif num > first_num:
count += 1
# Выводим количество чисел, больших первого введенного числа
print(count)
Если не использовать хитрости вроде замены списков кортежами и прочими итерабельными объектами, то основная трудность заключается в том, что условие прекращения (ввод нуля) должно проверяться до обработки введённого значения, что, казалось бы, автоматически влечёт использование break.
Однако в языке есть возможность, позволяющая обойти это ограничение, — выражение присваивания .
number = int(input())
count = 0
while (val := int(input())) != 0:
if val > number:
count += 1
print(count)