Есть ли причина, по которой Python пропустил бы строку? - PullRequest
0 голосов
/ 28 февраля 2019

Я всего несколько месяцев изучаю Python и пытаюсь написать программу, которая поможет проверить характеристики пароля.Я так близок к тому, чтобы получить то, что мне нужно, но одна строка, кажется, продолжает пропускаться, и я не могу понять, почему ... Вот код:

def main():

    print("Create a password. Password must follow these rules:")
    print("  - password must be at least 8 characters long")
    print("  - password must have one uppercase AND lowercase letter")
    print("  - password must have at least one digit")

    isValidPassword()

def isValidPassword():
    password = []
    password2 = []

    print()

    print("Enter password:", end="")
    pass1 = input("")    
    print("Re-enter password:", end="")
    pass2 = input("")

    password.append(pass1)
    password2.append(pass2)

    if password == password2 and len(password) >= 8 and password.isupper() == False and password.islower() == False and password.isalpha() == False and password.isdigit() == False:
        print("Password will work.")
    else:
        print("Password will not work. Try again.")
        isValidPassword()

main()

Когда я запускаю код,оператор print («Пароль будет работать») под моим оператором if не будет печататься, даже если я ввожу пароль, который отвечает всем требованиям.Я запустил оператор if в другом файле вне функции def isValidPassword (), и он, кажется, работает просто отлично.

Может кто-нибудь дать мне понять, почему это не сработает ..?

1 Ответ

0 голосов
/ 28 февраля 2019

Я думаю, что основная проблема заключается в сравнении здесь: password == password2, когда вы проверяете, равны ли два объекта list друг другу.Вам следует сохранить входные данные в виде строк и проверить, равны ли строки.

Этот код должен работать, как и ожидалось:

def isValidPassword():
    print("Enter password:", end="")
    password = input("")    
    print("Re-enter password:", end="")
    password2 = input("")

    if password == password2 and len(password) >= 8 and not password.isupper() and not password.islower() and not password.isalpha() and not password.isdigit():
        print("Password will work.")
    else:
        print("Password will not work. Try again.")
        isValidPassword()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...