Задать вопрос
@n293
Аналитик

На что заменить цикл for?

Есть задачка:
Проверьте, есть ли среди данных N чисел нули.

Формат ввода

Вводится число N, а затем N чисел.

Формат вывода

Выведите True, если среди введенных чисел есть хотя бы один нуль, или False в противном случае.

Мое решение:
print(any(int(input()) == 0 for _ in range(int(input()))))


Принимающая система не хочет его принимать, хотя работает нормально. Опытным путем было выяснено, что не хочет принимать из-за цикла for. Собственно, как изменить программу, чтобы избежать цикла?

Я пытался присобачить библиотеку itertools как-то так:
from itertools import chain
print(any(int(input()) == 0 in chain(range(int(input())))))


Но что-то вообще не очень вышло. Помогите пожалуйста!

UPD: забыл уточнить что вся эта радость в чисто "функциональном стиле" должна быть
  • Вопрос задан
  • 1869 просмотров
Подписаться 1 Простой 7 комментариев
Решения вопроса 2
@lega
0 in list(map(lambda r: int(r()), repeat(input, int(input()))))

Считывает значение N, далее считывает N чисел, потом проверяет вхождение.
Ответ написан
adugin
@adugin Куратор тега Python
Самый простой и буквальный способ:
result = '0' in input().split()
Можно усложнить:
result = not all(
    map(int, input().split())
)

UPD Тю, а что так скромно? Нужно наворотить больше функциональности!
from itertools import repeat

def ask(question, expected=int):
    return expected(input(question))

def ask_quantity():
    return ask('Введите количество чисел: ')

def ask_number():
    return ask('Введите число: ')

def call(func):
    return func()

def solve():
    return not(all(map(call, repeat(ask_number, ask_quantity()))))

if __name__ == '__main__':
    print(f'Результат: {solve()}')

Бонус - программа даёт ответ сразу после после ввода первого же нуля.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
SpectrumData Екатеринбург
от 200 000 до 300 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
19 янв. 2025, в 02:12
70000 руб./за проект
19 янв. 2025, в 01:58
20000 руб./за проект
18 янв. 2025, в 23:27
50000 руб./за проект