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