Open In App

Generate Random Strings for Passwords in Python

Last Updated : 28 Nov, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

A strong password should have a mix of uppercase letters, lowercase letters, numbers, and special characters. The efficient way to generate a random password is by using the random.choices() method. This method allows us to pick random characters from a list of choices, and it can repeat characters as needed.

Python
import random
import string

# Generate a random password of length 10
def generate_password(length):
    characters = string.ascii_letters + string.digits + string.punctuation
    return ''.join(random.choices(characters, k=length))


password = generate_password(10)
print(password)

Output
N9l}MF=827
  • string.ascii_letters gives us all letters (both uppercase and lowercase).
  • string.digits includes numbers from 0 to 9.
  • string.punctuation adds common special characters like !, @, #, etc.
  • random.choices() picks length number of characters from the combined list of possible characters.

Using random.sample()

If we want a password without repeated characters, we can use random.sample() instead. This method ensures that no character is repeated in the generated password.

Python
import random
import string

# Generate a random password of length 10 without duplicates
def generate_password(length):
    characters = string.ascii_letters + string.digits + string.punctuation
    return ''.join(random.sample(characters, length))


password = generate_password(10)
print(password)

Output
sY~J%{q@Fe

Manually Generating a Password

If we need more control over the password generation process, we can manually pick characters one by one while ensuring the password meets our requirements. This method is more complex but gives us flexibility.

Python
import random
import string

# Generate a random password of length 10
def generate_password(length):
    characters = string.ascii_letters + string.digits + string.punctuation
    password = []

    while len(password) < length:
        char = random.choice(characters)
        password.append(char)

    return ''.join(password)


password = generate_password(10)
print(password)

Output
kG<B:$Z1%G
  • We create an empty list password to store the characters.
  • We use random.choice() to select a character randomly from the available characters.
  • We continue this process until the password reaches the desired length.

Next Article

Similar Reads