Если из данных чисел есть 0 завершить программу

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

Тест 1 Входные данные: 3 4 19 14 Вывод программы: False Тест 2 Входные данные: 7 0 20 9 14 5 29 4 Вывод программы: True
Не могу сделать чтение в функциональном стиле. Вот мой неработающий код:
print(any(map(i for i in range(a) if i == 0, input())))
Отслеживать
51.9k 11 11 золотых знаков 107 107 серебряных знаков 309 309 бронзовых знаков
задан 20 июл 2017 в 14:48

23 1 1 серебряный знак 5 5 бронзовых знаков

Можно так: foo = lambda value: True if 0 in [int(input()) for x in range(value)] else False где value : кол-во чисел

20 июл 2017 в 15:09

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Никогда не пишите подобного на реальных задачах. Лучше написать три понятных строчки, чем одну такую, в которой вы сами запутаетесь до того, как допишете её до конца.

Исправление чисел, превратившихся в даты

Но если чисто ради прикола, то нужный вам код будет выглядеть как-то так:

print(0 in [int(input(‘Введите число:’)) for _ in range(int(input(‘Введите количество чисел:’)))])

Теперь кратко о том, что было не так в вашем коде:

  1. «map» принимает первым аргументом функцию, вторым — итерируемый объект. У вас первым аргументом идёт итерируемый объект, вторым — функция.
  2. Функция, которую вы указываете в «map» будет принимать аргументы из итератора. Что вы ожидаете получить, передавая в input() в качестве аргумента числа?
  3. «any» возвращает True, если хотя бы одно число не ноль. Вам нужно наоборот выяснить — является ли хотя бы одно число нулём.
  4. Если хотите использовать то, что ввёл пользователь, в качестве числа — то нужно обернуть это в int(). В идеале — ещё и обернуть это в исключение, но тут уже однострочник никак не получится.
Читайте также:
Шишкова английский для самых маленьких рабочая программа

Отслеживать
ответ дан 20 июл 2017 в 15:07
20.1k 3 3 золотых знака 25 25 серебряных знаков 52 52 бронзовых знака
Спасибо! Ваш разбор был очень полезен!
20 июл 2017 в 16:37

[] создаёт весь список целиком даже ели 0 может быть найден раньше. Можно на () заменить, чтобы закончить выполнение найдя ноль.

12 мар 2018 в 8:53

not all(map(int, map(input, range(int(input()))))) any(s.strip() == ‘0’ for s in map(input, range(int(input()))))
Отслеживать
ответ дан 20 июл 2017 в 17:18
vadim vaduxa vadim vaduxa
8,897 14 14 серебряных знаков 24 24 бронзовых знака

Если предположить, что первая строка всегда не 0, т. е. подразумевается, что за N обязательно следует, какое-то множество, то можно написать так:

import sys print(0 in map(int, sys.stdin.read().split(‘n’)))
Отслеживать
ответ дан 26 фев 2018 в 18:54
NoComments NoComments
31 3 3 бронзовых знака

Печатаем True если есть 0 среди n заданных чисел (и False в противном случае):

import sys from itertools import islice print(any(x == 0 for x in map(int, islice(sys.stdin, int(next(sys.stdin))))))

  1. islice(it, n) читает n элементов из it итератора (когда any() дёргает for -цикл, который в свою очередь дёргает map() , которая дёргает islice , которая дёргает sys.stdin — без any() не было бы чтения). В данном случае, islice() читает заданное количество строк
  2. map(int, превращает каждую прочитанную строку в целое число
  3. any(x == 0 выходит как только первый ноль встретится.

Вариант без импортов, используя только встроенные функции:

23 Функция ЕСЛИ в Excel (IF)


n = int(input()) print(n > sum(1 for _ in zip(range(n), iter(input, ‘0’))))

  1. n = int(input()) — читаем количество чисел во вводе
  2. iter(input, ‘0’) — читаем строки, пока 0 не встретится (целая строка 0 )
  3. zip(range(n), гарантирует, что не больше n строк будет прочитано.
Читайте также:
Бизнес студио описание программы

Оба варианта ленивые: читают ровно столько сколько нужно: как только 0 встречается, код завершает итерации. Код не читает более (n + 1) строк (раньше EOF может выйти даже если 0 не встретился).

Источник: ru.stackoverflow.com

Нужно чтобы при вводе числа 0 программа завершала работу — C (СИ)

Привет всем.Это моя первая тема У меня такая проблема,задание я сделал но вот не до конца.Нужно чтобы при вводе числа 0 программа завершала работу,я понимаю что надо использовать оператор break,но не понимаю где его тут использовать для переменной M.Подскажите пожалуйста куда подставить break ?

#include #include main() < int j,N,M,S; printf(«Enter number Mn»); scanf(«%d», N=4; < while(N<=M) < S=1;j=2; while(j<=N/2) < if(N%j==0) S=S+j; j=j+1; if(M==0)break; >if(N==S) printf(«%d- perfect numbern»,N); N=N+2; > getch(); return 0; >

Код к задаче: «Нужно чтобы при вводе числа 0 программа завершала работу»

Листинг программы

#include #include main() < int j,N,M,S; printf(«Enter number Mn»); scanf(«%d», N=4; if(M!=0) < while(N<=M) < S=1;j=2; while(j<=N/2) < if(N%j==0) S=S+j; j=j+1; break; >if(N==S) printf(«%d- perfect numbern»,N); N=N+2; > > else < printf(«равно нулю»); >getch(); return 0; >

Источник: studassistent.ru

Нужна помощь с завершением программы(не получается вывести 0 на экран).

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно.
Необходимо обновить браузер или попробовать использовать другой.

Lev29reg

Пользователь
Сен 27, 2020 4 0 1

Пользователь вводит любое число.
Используя цикл while и вложенные условия, необходимо написать программу, которая выведет все числа от нуля до введённого в столбик. Необходимо учитывать, что пользователь может ввести как положительное, так и отрицательное число. Если пользователь введет 0, программа должна вывести 0.

Вот что у меня пока получилось.

a=int(input(«Введите число»))
b=0
while b!=a :
if a>0:
print(b)
b=b+1
else:
if a print(b)
b=b-1

Читайте также:
Hotpoint ariston lst 53977 инструкция программы

Источник: itfy.org

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru