Напишите функцию only_positive_even_sum, которая принимает два параметра и возвращает их сумму.
Если один из параметров не является целым числом, то следует вызвать исключение TypeError.
Если один из параметров не является положительным чётным числом, то следует вызвать исключение ValueError.
Примечание
Ваше решение должно содержать только функции.
В решении не должно быть вызовов требуемых функций.
Пример
Ввод
print(only_positive_even_sum("3", 2.5))Вывод
Вызвано исключение TypeErrorВвод
print(only_positive_even_sum(-5, 4))Вывод
Вызвано исключение ValueErrorРешение
Простая задача для отработки использования raise.
Проверяем условия и вызываем исключения, если какое-то из условий не соблюдено.
Такое решение представлено первым.
Но можно заодно познакомиться с прекрасными функциями all() и any(). Которые возвращают True если все (all) или хотя бы одно (any) из значений соответствуют условию.
Посмотреть код
Решение
def only_positive_even_sum(*args):
for item in args:
if not isinstance(item, int):
raise TypeError
for item in args:
if item <= 0 or item % 2 != 0:
raise ValueError
return sum(args)Решение
def only_positive_even_sum(*args):
if any([not isinstance(c, int) for c in args]):
raise TypeError
elif not all([(c > 0) and (c % 2 == 0) for c in args]):
raise ValueError
else:
return sum(args)
Во втором решении пропущен аргумент функции all().
Очевидно, аргументом должен быть:
[c >= 0 and c % 2 == 0 for c in args]
Спасибо, что обратили внимание.
К сожалению это особенность вордпресса
там внутри находится [c > 0 and c % 2 == 0 for c in args], что воспринимается вордпрессом как некоторая управляющая последовательность и поэтому она не выводится.
Спасибо Вам большое за проект!