Learn Regular Expressions by Building a Password Generator - Step 72

Tell us what’s happening:

i ended as we usually do on all the other projects

Your code so far

import re
import secrets
import string


def generate_password(length=16, nums=1, special_chars=1, uppercase=1, lowercase=1):

    # 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'),
            (special_chars, fr'[{symbols}]'),
            (uppercase, r'[A-Z]'),
            (lowercase, r'[a-z]')
        ]

        # 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()
print('Generated password:', new_password)
        if __name__ == "__main__":
            main()

# User Editable Region

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0

Challenge Information:

Learn Regular Expressions by Building a Password Generator - Step 72
https://www.freecodecamp.org/learn/scientific-computing-with-python/learn-regular-expressions-by-building-a-password-generator/step-72`Preformatted text`

Do you have a question or…? I’m not sure what’s going on here.

Please Tell us what’s happening in your own words.

Learning to describe problems is hard, but it is an important part of learning how to code.

Also, the more you say, the more we can help!

as yk we usually end the projects with main() but i have done that but it is saying it’s wrong

Oh. You are supposed to put the last two lines of your code inside an if statement that execute when __name__ == '__main__'. In other words, you are supposed to generate the password and print it only when __name__ is equal to __main__; this signals that the program has entered the main function.

Hope this helps.