Неверно работает условие или цикл. Часть 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("К сожалению, условия не выполнены, попробуйте еще раз")