Tell us what’s happening:
Not an issue with the code. Just wanting an explanation. What is ‘constraint’ in the expression portion of the list comprehension? It is being compared to the len function, which returns an numeric value. I thought ‘constraint’ referred to the first entry in the tuples of the constraints list.
Your code so far
import re
import secrets
import string
def generate_password(length, nums, special_chars, uppercase, lowercase):
# Define the possible characters for the password
letters = string.ascii_letters
digits = string.digits
symbols = string.punctuation
# Combine all characters
all_characters = letters + digits + symbols
while True:
password = ''
# Generate password
for _ in range(length):
password += secrets.choice(all_characters)
constraints = [
(nums, r'\d'),
(lowercase, r'[a-z]'),
(uppercase, r'[A-Z]'),
(special_chars, fr'[{symbols}]')
]
# Check constraints
count = 0
# User Editable Region
if all([constraint <= len(re.findall(pattern, password)) for constraint, pattern in constraints]):
# User Editable Region
break
return password
# new_password = generate_password(8)
# print(new_password)
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
Challenge Information:
Learn Regular Expressions by Building a Password Generator - Step 62