Learn Regular Expressions by Building a Password Generator - Step 57

Tell us what’s happening:

Can’t seem to understand what is not working…step 57

“Inside your for loop, compare constraint and the length of the list returned by findall(). Use the <= operator for that.”

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}]')            

/* User Editable Region */

        # Check constraints
        for constraint, pattern in constraints:
            if constraint <= len(re.findall(pattern, password)):

/* User Editable Region */

    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/ Safari/537.36

Challenge Information:

Learn Regular Expressions by Building a Password Generator - Step 57

Here you should compare constraint and the value returned by len(). You shouldn’t write an if statement.

thank you. This was sooo silly. Sometimes you need to take the instructions verbatim, other times to read between the lines…