Код Middle Исключения и контекстные менеджеры обновлено

Собрать все ошибки валидации

Условие

Напишите validate(user): проверьте словарь пользователя и верните список всех ошибок (не останавливаясь на первой) в порядке проверок: "name: required" если нет непустой строки name; "age: must be int" если age не int (или bool); "age: out of range" если age int вне 0..150; "email: invalid" если в email нет ровно одного @ с непустыми частями. Отсутствующий age или email считается ошибкой своего пункта.

Примеры

validate({"name":"Аня","age":30,"email":"a@b.ru"}) // []
validate({}) // ["name: required", "age: must be int", "email: invalid"]
validate({"name":"  ","age":200,"email":"@b"}) // ["name: required", "age: out of range", "email: invalid"]

Как подойти

Подсказки: 2
  1. Не используйте исключения для потока управления, копите список.
  2. isinstance(True, int) истинно.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.