Как проверить действительность пароля (ввод от пользователей), не используя import re? - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь проверить действительность пароля без использования import re, но он всегда дает мне недействительный. Где моя ошибка, пожалуйста?

password = input('Enter your password: ')

while True:
    if password not in [i for i in range(0,9)]:
        print('not valid')
        break
    elif (len(password)<6 or len(password)> 9):
        print('not valid')
        break
    elif password not in [chr(c) for c in range(97, 123)]:
        print('not valid')
        break
    elif password not in [chr(c) for c in range(65, 91)]:
        print('not valid')
        break
    elif password not in ('$','#','@'):
        print('Not valid')
        break
    else:
        print('Valid')
        break

1 Ответ

0 голосов
/ 07 февраля 2020

Ваш первый тест всегда вызывает True. password является строкой, и поэтому она не находится внутри этого списка чисел.

Создание строк элементов списка исправляет ее:

if password not in [str(i) for i in range(0,9)]:

, но только для одиночных паролей di git ( !).

Я предполагаю, что вы захотите проверить каждый отдельный символ вместо:

for ch in password:
    .. your tests

, но вам придется пересмотреть свой алгоритм, потому что если символ x сразу же провалит первый тест. У вас есть последовательность

not(a) or not(b) or not(c)

, и вы хотите либо

not(a) and not(b) and not(c)

, либо

not (a or b or c)
...