Python

Програмирование 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))
Анвар Айбуев
Анвар Айбуев
87 571
Лучший ответ
Ardasher Niyazov Можно вообще без явной переменной-итератора
 first = int(input())   
print(sum(1 for k in map(int, iter(input, '0')) if k > first))

Но что-то мне подсказывает, что это явно не то, что хотел получить учитель, накладывая ограничение
Запрещенные операторы: break;list;[
 print((lambda x: sum(v > x.__getitem__(0) for v in x))(tuple(map(int, iter(input, '0'))))) 
Артём :-))
Артём :-))
34 940
Анвар Айбуев tuple вместо list... ну да, формально не нарушил. Просто будет кортеж в миллион элементов, если что.
Артём :-)) не для себя же пишу)
Если не использовать хитрости вроде замены списков кортежами и прочими итерабельными объектами, то основная трудность заключается в том, что условие прекращения (ввод нуля) должно проверяться до обработки введённого значения, что, казалось бы, автоматически влечёт использование break.

Однако в языке есть возможность, позволяющая обойти это ограничение, — выражение присваивания .
 number = int(input())  
count = 0
while (val := int(input())) != 0:
if val > number:
count += 1
print(count)
Анвар Айбуев Между кортежами и итераторами есть колоссальная разница.
Итератор хранит одно текущее значение.
..владислав.... ...... Это вообще ни разу не основная трудность, а обычное трюкачество, которому в реальных программах нет места, и учить ему школьников нет смысла. Оптимизируют расход памяти и циклов cpu.
 # Считываем первое число и инициализируем переменную-счетчик 
first_num = int(input())
count = 0

# Считываем остальные числа и проверяем, больше ли они первого числа
while True:
num = int(input())
if num == 0: # Если введен ноль, прерываем цикл
break
elif num > first_num:
count += 1

# Выводим количество чисел, больших первого введенного числа
print(count)
Bondarenko Evgenij
Bondarenko Evgenij
3 288
Сергей Смешной а вы использовали break;list;?
number = int(input("Число'))
count = 0
ans = 100
while ans != 0:
ans = int(input())
if ans > number:
count += 1
print(count)

Если честно, не совсем понял задачу, но помог чем смог. Сорри)
Chausy Leshoz
Chausy Leshoz
1 072
Дмитрий Александрович Этот код неправильно работает, потому что обрабатывает последний ноль.