Я пытаюсь написать код, который проверяет, соответствует ли введенный пароль критериям, приведенным ниже.
- Как минимум 1 буква между [a-z]
- Как минимум 1 число между [0-9]
- Как минимум 1 буква между [A-Z]
- Как минимум 1 символ из [$ # @]
- Минимальная длина пароля транзакции: 6
- Максимальная длина пароля транзакции: 12
Вывод и скриншот кода
import re
tmp=[]
for i in input().split(','):
print(i)
upp=0
low=0
dig=0
sch=0
for j in i:
if j.isdigit() and dig!=1:
dig=1
elif j.isupper() and upp!=1:
upp=1
elif j.islower() and low!=1:
low=1
elif re.search("[$#@]",j) and sch!=1:
sch=1
elif dig and sch and low and upp and (len(i)>=6 and len(i)<=12)==True:
tmp+=[i]
print(i)
print(tmp)
print(','.join(tmp))
Контрольный пример
Это @ МЕ1, notThis, Fine @ 3456, & 1234567sdfD
Кажется, он проходит через один из тестов трижды?
Вывод выглядит так:
This@me1
notThis
Fine@3456
Fine@3456
['Fine@3456']
Fine@3456
['Fine@3456', 'Fine@3456']
Fine@3456
['Fine@3456', 'Fine@3456', 'Fine@3456']
&1234567sdfD
Fine@3456,Fine@3456,Fine@3456
Не совсем уверен, что является причиной этого. Почему трижды запускается дело Fine @ 3456? Кроме того, я не понимаю, почему первый случай This @ me1 также не распознается как действительный.
Любая помощь будет высоко ценится!
Примечание: я запускаю этот код на сайте repl.it: https://IroncladSoulfulKiskadee.yashvedi.repl.run <- для запуска теста </p>
Python 3.6.1 (по умолчанию, декабрь 2015 г., 13:05:11)
[GCC 4.8.2] в Linux
пс. Пожалуйста, игнорируйте избыточность в коде;
Спасибо.