Самый простой способ проверить наличие верхних слоев - PullRequest
1 голос
/ 10 апреля 2020

Здесь я пытаюсь подтвердить пароль и проверить, есть ли заглавные буквы и цифры в пароле, прежде чем сохранить его как другую переменную. Используя функции, я могу это сделать. Отступы изменились в формате, поэтому, пожалуйста, помогите мне с другими аспектами.


def length(long):
    while len(long) < 10:
        print("Please make your password longer, up to at least 10 characters.")
        print("Your password is only " + str(len(long) + " characters long")

if password.isupper() = True:
  print("Welcome to this student interface")
  username = input("Please enter a username")
  password = input("Please enter a strong password")
  length(password)

Это то, что я сейчас сделал:

def length(long):
    bool LengthCheck = False
    if len(long) < 10:
        print("Please make your password longer, up to at least 10 characters.")
        print("Your password is only " + str(len(long) + " characters long")
    else:
        LengthCheck = True

errors = []

print("Welcome to this student interface")
username = input("Please enter a username")
password = input("Please enter a strong password")
length(password)

bool Capcheck = False
bool DigCheck  = False

while CapCheck = False or CapCheck = False:
    length(password)

    if not any(x.isupper() for x in password):
        errors.append("Your password needs at least 1 capital.")
    else:
        CapCheck = True
        break

    if not any(x.islower() for x in password):
        errors.append("......... Why?")

    if not any(x.isdigit() for x in password):
        errors.append("You need to have at least 1 digit")
    else:
        DigCheck = True
        break

    if errors:
        print(" ".join(errors))
        password = input("Please enter a stronger password")

Видимо, ошибка с моим логическим значением здесь, пожалуйста, помогите

def length(long):
    bool LengthCheck = False
    if len(long) < 10:
        print("Please make your password longer, up to at least 10 characters.")
        print("Your password is only " + str(len(long) + " characters long")
    else:
        LengthCheck = True

Ответы [ 2 ]

4 голосов
/ 10 апреля 2020

Попробуйте использовать islower():

password.islower()

Возвращает True, если в пароле нет заглавных букв.


Теперь, если вы хотите проверить, имеет ли он номер i, вы должны следовать @jubnvz:

any(i.isdigit() for i in password)

или более конкретному c способу:

any(map(str.isdigit, password))

А для ввода пароля попробуйте:

while True:
    password = input(""Please enter a strong password:")
    if not any(x.isupper() for x in password):
        print("Your password needs at least 1 upper case.")
    elif not any(x.isdigit() for x in password):
        print("You need to have at least 1 digit")
    elif not any(x.islower() for x in password):
        print("Your password needs at least 1 lower case.")
    elif len(password) < 10:
        print("Please make your password longer, up to at least 10 characters.")
        print("Your password is only " + str(len(password)) + " characters long")
    else:
        break

Если вы хотите и подтвердите пароль, попробуйте:

while True:
    password = input(""Please enter a strong password:")
    if not any(x.isupper() for x in password):
        print("Your password needs at least 1 upper case.")
    elif not any(x.isdigit() for x in password):
        print("You need to have at least 1 digit")
    elif not any(x.islower() for x in password):
        print("Your password needs at least 1 lower case.")
    elif len(password) < 10:
        print("Please make your password longer, up to at least 10 characters.")
        print("Your password is only " + str(len(password)) + " characters long")
    else:
        passwordcon = input(""Please confirm your password:")
        if passwordcon == password:
            break
        else:
            print("Your passwords do not match, try again'")
2 голосов
/ 10 апреля 2020
 any([p.isupper() for p in password])    
...