Неверно работает условие или цикл. Часть 2

По совету задаю как новый вопрос. Обернула код в функции. Но работает он не в полной мере. Если ввести неверно логин и не важно как пароль, то на выводе будут 2 сообщения из 3: 1. О не верном логине, 2. Попробуйте еще раз. Почему нет вывода о верном/неверном пароле? При этом, не срабатывает вывод, если выполняется условие о количестве символов. Если ввести меньше 8, сообщение о пароле будет выведено.

def check_login(login):
    uppercase_letters = 0
    if len(login) >= 6:
        for char in login:
            if char.isupper():
                uppercase_letters += 1
        if uppercase_letters == 2:
            print("Логин соответствует условиям регистрации")
            return True
        else:
            print("Логин не соответствует условиям регистрации")
            return False
    else:
        print("Логин не соответствует условиям регистрации")
        return False


def check_password(password):
    uppercase_letters = 0
    digits = 0
    if len(password) >= 8:
        for char in password:
            if char.isupper():
                uppercase_letters += 1
            if char.isdigit():
                digits += 1
        if uppercase_letters == 1 and digits >= 1:
            print("Пароль соответствует условиям регистрации")
            return True
        else:
            print("Пароль не соответствует условиям регистрации")
            return False
    else:
        print("Пароль не соответствует условиям регистрации")
        return False


while True:
    login = input("Введите логин: ")
    password = input("Введите пароль: ")

    if check_login(login) and check_password(password):
        print("Вы успешно зарегистрированы! Добро пожаловать в MangoFM")
        break
    else:
        print("К сожалению, условия не выполнены, попробуйте еще раз")

Отредактированный рабочий код:

def check_login(login):
    uppercase_letters = 0
    if len(login) >= 6:
        for char in login:
            if char.isupper():
                uppercase_letters += 1
        if uppercase_letters == 2:
            print("Логин соответствует условиям регистрации")
            return True
        else:
            print("Логин не соответствует условиям регистрации")
            return False
    else:
        print("Логин не соответствует условиям регистрации")
        return False


def check_password(password):
    uppercase_letters = 0
    digits = 0
    if len(password) >= 8:
        for char in password:
            if char.isupper():
                uppercase_letters += 1
            if char.isdigit():
                digits += 1

        if uppercase_letters == 1 and digits >= 1:
            print("Пароль соответствует условиям регистрации")
            return True
        else:
            print("Пароль не соответствует условиям регистрации")
            return False
    else:
        print("Пароль не соответствует условиям регистрации")
        return False


while True:
    login = input("Введите логин: ")
    password = input("Введите пароль: ")

    if check_login(login):
        if check_password(password):
            print("Вы успешно зарегистрированы! Добро пожаловать в MangoFM")
            break
        else:
            print("К сожалению, условия не выполнены, попробуйте еще раз")
    else:
        if check_password(password) == False:
            print("К сожалению, условия не выполнены, попробуйте еще раз")
        else:
            print("К сожалению, условия не выполнены, попробуйте еще раз")

Ответы (2 шт):

Автор решения: Эникейщик

Вот здесь

if check_login(login) and check_password(password):

сначала проверяется check_login(login), если функция возвращает False, то вторая проверка (check_password(password))не выполняется, потому что она уже ни на что не влияет.

Это называется "ленивая проверка".

→ Ссылка
Автор решения: Tory
def check_login(login):
    uppercase_letters = 0
    if len(login) >= 6:
        for char in login:
            if char.isupper():
                uppercase_letters += 1
        if uppercase_letters == 2:
            print("Логин соответствует условиям регистрации")
            return True
        else:
            print("Логин не соответствует условиям регистрации")
            return False
    else:
        print("Логин не соответствует условиям регистрации")
        return False


def check_password(password):
    uppercase_letters = 0
    digits = 0
    if len(password) >= 8:
        for char in password:
            if char.isupper():
                uppercase_letters += 1
            if char.isdigit():
                digits += 1

        if uppercase_letters == 1 and digits >= 1:
            print("Пароль соответствует условиям регистрации")
            return True
        else:
            print("Пароль не соответствует условиям регистрации")
            return False
    else:
        print("Пароль не соответствует условиям регистрации")
        return False


while True:
    login = input("Введите логин: ")
    password = input("Введите пароль: ")

    if check_login(login):
        if check_password(password):
            print("Вы успешно зарегистрированы! Добро пожаловать в MangoFM")
            break
        else:
            print("К сожалению, условия не выполнены, попробуйте еще раз")
    else:
        if check_password(password) == False:
            print("К сожалению, условия не выполнены, попробуйте еще раз")
        else:
            print("К сожалению, условия не выполнены, попробуйте еще раз")
→ Ссылка