Learn Regular Expressions by Building a Password Generator - Step 57

Tell us what’s happening:

I cannot get Step 57 to pass. I followed the instructions exactly, using for constraint, pattern in constraints: and if len(re.findall(pattern, password)) <= constraint: pass. I tried different variations, including swapping the order of constraint and pattern, changing operators, and checking indentation, but the system still shows an error. Please help me understand what exactly needs to be corrected.

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 len(re.findall(pattern, password)) <= constraint:
                pass

# User Editable Region


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

Challenge Information:

Learn Regular Expressions by Building a Password Generator - Step 57

You only need to adapt the code already there. It does not say write an if statement. Where is your code to determine the length of the list returned by findall? Do you recall how to find that?