Learn Regular Expressions by Building a Password Generator - Step 65

Tell us what’s happening:

" new_password = generate_password(8,1,1,1,1)
print(new_password)" this line does not work even if I pass the arguments as above. I can not really understand what is wrong… (I already read existing answer and it didn’t end up working)

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        
        if all(
            constraint <= len(re.findall(pattern, password))
            for constraint, pattern in constraints
        ):
            break

    return password
    

# User Editable Region

 new_password = generate_password(8,1,1,1,1)
 print(new_password)

# User Editable Region

Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.3 Safari/605.1.15

Challenge Information:

Learn Regular Expressions by Building a Password Generator - Step 65

Those two lines are indented. Remove the indentation and it will work.

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.