Python генератор паролей я пытаюсь код не работает, но нет сообщения об ошибке - PullRequest
1 голос
/ 22 января 2020

Я пытаюсь заставить его работать с регулярными выражениями с пользовательским вводом, но это не работает, нет сообщения об ошибке. Может быть, мое заявление if не будет признано?


print(“type password”)
password =input()

pattern=r”([0-10000000][a-z][A-Z])”

match=re.search(pattern,password)

if match and (len(password)<9) and (len(password)>4):
    print(“password is strong”)
else: 
    print(“password should have at least one letter, number, and capital letter included and be between 5 and 8 characters long”)```

Ответы [ 2 ]

1 голос
/ 22 января 2020

Давайте пройдемся по вашему текущему регулярному выражению, ([0-10000000][a-z][A-Z]):

  1. [0-10000000] соответствует одному символу в диапазоне 0-1 или символу 0.
  2. [a-z] затем соответствует одному символу в диапазоне az.
  3. [A-Z] соответствует одному символу в диапазоне AZ.

Чтобы сложить все вместе: соответствует номеру 0 или 1, за которым следует строчная буква, а затем заглавная буква. Это сильно отличается от того, что вы намеревались.


Регулярное выражение, которое я придумал, это: ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[\da-zA-z]{5,8}$. Я сохранил его на Regex101 , чтобы вы могли легко увидеть, что он делает, и протестировать его.

Вот пример программы:

import re

pwd_patt = re.compile(r"^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[\da-zA-z]{5,8}$")

test_strs = ["Amc01", "Ac", "aa0aa", "aa0aaAadwaw", "ghG789"]

for curr_str in test_strs:
    print(curr_str, pwd_patt.fullmatch(curr_str))

Вывод:

Amc01 <re.Match object; span=(0, 5), match='Amc01'>
Ac None
aa0aa None
aa0aaAadwaw None
ghG789 <re.Match object; span=(0, 6), match='ghG789'>
0 голосов
/ 22 января 2020

вы можете попробовать эту версию:

import re  # you probably missed the import 
print("type password")  # ALL quotes were of a different style! 
password =input()
pattern=r"([0-9]*)([a-z]*)([A-Z]*)"  # the regex was a little wrong try: regex101.com
match=re.search(pattern,password)
if match and 9 > len(password) > 4:  # changed also the condition to a more pythonic
    print("password is strong")
else:
    print("password is not between 5 and 8 characters long")

если вы новичок в python вы можете проверить также физические упражнения, у которых есть хорошие упражнения, и у вас могут быть наставники, которые помогут!

весело с python это здорово: -)

import this # показывает дзен python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...