Tell us what’s happening:
No issue. There is a typo in the instruction. Not sure who should know about it to fix.
" You can combine the all()
function with the list comphehension syntax to make your code more concise."
comphehension should be comprehension.
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 [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/120.0.0.0 Safari/537.36
Challenge Information:
Learn Regular Expressions by Building a Password Generator - Step 62