Learn Regular Expressions by Building a Password Generator - Step 71

I have passed a Generated password: string and new_password to my print() call.
But my code does not pass. I tried using the f-string. The code still does not pass. However I notice that in the console a password is generated each time I call the print() function. I have tried removing spaces, tried concatenating . The code still does not pass. Please help

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)

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

Challenge Information:

Learn Regular Expressions by Building a Password Generator - Step 71

Hello Zack,

Your string doesn’t need a space after :, also instead of +, can you think of a different character to seperate the 2 arguements?

3 Likes

Technically the output will be the same. The clue is here:

as the first argument,

So your print statement needs 2 arguments. Right now, you are concatenating 2 strings into 1 argument, but you need to pass 2 arguments to print()

3 Likes

Hi @HungryBee I can think of a comma to separate the two arguments. I will try that. The reason I put a space after the ‘:’ is because I notice in the console that without the space the string and the output of new_password are all close together. Okay let me try using the comma ‘,’

“Boom Shakalaka!” It passed. Thank you @HungryBee. Also I removed the space and it seems alright. Thanks

3 Likes

Yeah as pkdvalis said, it’s the difference btween conceatenating strings and making them in separate arguements. For some reason it wants the later here.

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