Дана непустая последовательность целых чисел, оканчивающаяся нулем. Ноль в последовательность не входит, служит признаком ее окончания. Найти количество чисел последовательности, которые больше первого введенного числа.
Входные данные
На вход поступают числа последовательности, по одному числу в строке. Ноль - признак окончания ввода.
Выходные данные
Выведите ответ на задачу.
Запрещенные операторы: break;list;[
напишите програмуу на питон
Python
Програмирование 7 класс
Без хранения элементов в памяти, будь то в виде списка (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))
print((lambda x: sum(v > x.__getitem__(0) for v in x))(tuple(map(int, iter(input, '0')))))
Сергей Смешной
спасибо!!!
Анвар Айбуев
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)
Сергей Смешной
а вы использовали break;list;?
Сергей Смешной
я понял
number = int(input("Число'))
count = 0
ans = 100
while ans != 0:
ans = int(input())
if ans > number:
count += 1
print(count)
Если честно, не совсем понял задачу, но помог чем смог. Сорри)
count = 0
ans = 100
while ans != 0:
ans = int(input())
if ans > number:
count += 1
print(count)
Если честно, не совсем понял задачу, но помог чем смог. Сорри)
Сергей Смешной
спасибо
Дмитрий Александрович
Этот код неправильно работает, потому что обрабатывает последний ноль.
Похожие вопросы
- Python Обработка данных в цикле. 7 класс
- Лабораторная работа програмирование 2
- програмирование математика
- Начал изучать програмирование, читаю книгу и не понимаю
- Что нужно знать при изучении языков програмирования?
- Python Задание по програмированию
- Програмирование питон тэст срочно
- Помогите разобраться в теме Классы Питон
- Информатика, 8 класс, Python
- Могу ли я бросить учебу в 10 классе и трудоустроиться в хорошую компанию имея знания но не имея аттестата
Но что-то мне подсказывает, что это явно не то, что хотел получить учитель, накладывая ограничение