С клавиатуры вводится трёхзначное число. Нужно вывести ответ «Да», если все его цифры...

+513 голосов
2.8m просмотров

С клавиатуры вводится трёхзначное число. Нужно вывести ответ «Да», если все его цифры четные, и ответ «Нет» в остальных случаях. Python


Информатика (59 баллов) | 2.8m просмотров
Дано ответов: 2
+174 голосов

a = list(input('Введите число: '))

b = len(a)

for i in a:

  if int(i) % 2 != 0: b -= 1

if b == len(a): print('Да')

else: print('Нет')

(528 баллов)
+55

спасибо за то что указали на ошибку

+56

Да и вообще, я таки вник, вы проверяете что в числе все цифры одинаковые. А просят чётность.

+90

зачем нужна проверка if i == len(a) - 1: break, если вы могли просто задать правую границу range() как len(a) -1, а не просто len(a)? Ваша программа будет как минимум каждую итерацию цикла тратить время на высчитывание len(a) и сравнивание этой величины

+52

Я вот вообще не могу вникнуть, как ваше творение должно проверять чётность всех цифр в числе

+171

А вот пройдёт пару недель, и попроси вас объяснить, что вообще происходит в этой програмке, сможете объяснить?)

+116 голосов

Ответ:

import typing

from typing import Any

from typing import AnyStr

from typing import Callable

def NumericStringScan(NumString: AnyStr, predicate: Callable[[int], bool]):

   for digit in NumString:

       if not predicate(int(digit)): return False

   return True

def main():

   NumString = input('Enter number to analyse:\n')

   IsAllDigitEven = NumericStringScan(NumString, lambda d: d % 2 == 0)

   print('Да' if (IsAllDigitEven) else 'Нет')

   

if __name__ == "__main__":

   main()

(1.6k баллов)