Две взаимоисключающие ветви
If–else выбирает один из двух блоков. При истинном условии выполняется первый, при ложном — второй. Это удобно, когда оба исхода должны иметь явно заданное поведение.
Задание источника
Функция проверяет совпадение пароля и подтверждения и возвращает одну из двух строк:
def check_password_confirmation(password: str, confirmation: str) -> str:
if password == confirmation:
return "Password confirmed"
else:
return "Passwords do not match"
Примеры
Для двух одинаковых учебных строк результат — "Password confirmed". При различии хотя бы одного символа возвращается "Passwords do not match". Сравнение чувствительно к регистру и пробелам: "abc" отличается от "Abc" и "abc ".
Две пустые строки также равны. Поэтому этот код может подтвердить их совпадение, хотя отдельное правило приложения могло бы запретить пустой пароль.
Возврат вместо печати
Функция возвращает сообщение. Вызывающий код сам решает, показать его пользователю или использовать иначе. Печатать исходные секреты для проверки примера не требуется; в обучении достаточно вымышленных строк.
Что эта проверка не делает
Равенство двух строк не оценивает стойкость пароля, не проверяет его по базе, не хеширует и не сохраняет. Это лишь один локальный шаг подтверждения ввода. Не следует представлять короткое упражнение как готовую систему безопасной аутентификации.
После безусловного return в первом блоке else можно опустить, оставив второй return на уровне тела функции. В этом уроке вариант if–else сохранён специально, чтобы показать обе ветви конструкции.
Hexlet / Code Basics и участники · Исходный урок и решение · GNU AGPL v3. Учебная проверка равенства отделена от полной обработки паролей.