Learn Regular Expressions by Building a Password Generator - Step 62

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

Following the logic backwards:

for **constraint**, pattern in **constraints**
**constraints** = [(**nums**, r'\d'),
def generate_password(length, **nums**

contraint will be nums which is an argument that you’ll pass to the function:

# new_password = generate_password(8)

But that part hasn’t been coded yet…

It seems like nums will be the minimum number of numbers that your password needs to have? An integer like 5 or 10

1 Like

Thank you. This makes a lot more sense now that it’s completed. I hope this kind of explanation gets added to the instructions. It didn’t make much sense without it.