import random
chars = '+-*/'
smletters = 'qwertyuiopasdfghjklzxcvbnm'
bgletters = 'QWERTYUIOPASDFGHJKLZXCVBNM'
numbers = '1234567890'
allsymbols = '+-*/qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890'
for i in range(5):
result = ''
for j in range(8):
result += random.choice(chars+smletters+bgletters+numbers)
if result.count(chars) > 0:
continue
if result.count(smletters) > 0:
continue
if result.count(bgletters) > 0:
continue
if result.count(numbers) > 0:
print(result)
import re
def is_password_valid(password):
return bool(re.search('(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[+\-*\/])', password))
print(is_password_valid("&"))
print(is_password_valid("shsgddg+-/*GGH"))
print(is_password_valid("Aa1+"))
import re
def is_val(pas):
is_ok1 = bool(re.search("[a-z]",pas))
is_ok2 = bool(re.search("[A-Z]",pas))
is_ok3 = bool(re.search("[0-9]",pas))
is_ok4 = bool(re.search("[+\-*\/]",pas))
return is_ok1 and is_ok2 and is_ok3 and is_ok4
print(is_val("asd"))
print(is_val("shsgddg+-/*GGH"))
print(is_val("1Aa1+"))
print(is_val("sh12sgddg+-/*GGH"))
re
стандартной библиотеки.def check_password_for_chars(password, chars):
for char in chars:
if char in password:
return True
return False
chars
свои наборы символов.chars
. Убираете return True
из тела цикла. Добавляете в функцию третий аргумент, скажем min_count
(минимальный счёт), и перед циклом добавляете локальную переменную, скажем count
(счёт), со значением 0
. Тогда в теле цикла, при каждом обнаружении искомого символа в пароле, Вы увеличиваете count
на 1
. И в конце проверяете, что count
больше или равно min_count
, чтобы вернуть True
или False
.allowed = set("abcd") # разрешенные символы
password_ok = "babc" # валидный пароль
password_bad = "baz" # невалидный пароль
print(set(password_ok).issubset(allowed)) # true - пароль состоит только из символов allowed
print(set(password_bad).issubset(allowed)) # false, в пароле есть другие не разрешенные символы
def password_valid(password, allowed):
return set(password).issubset(set(allowed))