Задать вопрос
@Emince

Почему условие выполняется не корректно?

Требуется написать проверку вводимого пароля на количество символов (не менее 8), не менее 3-х цифр, не менее одной заглавной буквы. Слепил то, что ниже. Но условия вместе не выполняются, выполняется каждое по отдельности, как будто and работает как or. Не могу понять, где ошибка.

def number_count(string):
    count = 0

    for ch in string:
        if ch.isdigit():
            count += 1
    return count


while 1:
    password = input('Придумайте пароль: ')
    if len(password) < 8 and number_count(password) < 3 and password.islower() == 1:
        print('Пароль ненадёжный. Попробуйте ещё раз.')
    else:
        print('Пароль надёжный.')
        break
  • Вопрос задан
  • 171 просмотр
Подписаться 1 Простой 1 комментарий
Решение пользователя Emince К ответам на вопрос (3)
@Emince Автор вопроса
Задачу решил, всем спасибо!

def number_count(string):
    count = 0

    for ch in string:
        if ch.isdigit():
            count += 1
    return count


alphabet = ''.join([chr(i) for i in range(ord('А'), ord('Я') + 1)] + \
           [chr(i) for i in range(ord('а'), ord('я') + 1)])


while 1:
    ru_count = 0
    password = input('Придумайте пароль: ')
    for chr in password:
        for smb in alphabet:
            if smb == chr:
                ru_count += 1
    if ru_count > 0:
        print('Допускается ввод только латинских букв')
    else:
        if number_count(password) < 3 or password.islower() == 1 or password.isdigit() == 1 or len(password) < 8:
            print('Пароль ненадёжный. Попробуйте ещё раз.')
        else:
            print('Пароль надёжный.')
            break
Ответ написан
Комментировать