How to build a Password Generator using Python
Tags: python, tutorial, codenewbie, beginners
Published: 2021-02-09 15:36:48

Hi there, let's create a **Password Generator Python Project** which is super quick & super fun!

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/l5wz2qurjbc35czkzn76.png)

## How do Password Generators work?

Password Generators are nothing but simple programs which are capable of randomly creating strings which consist of alphabets, numbers & symbols.

The Password Generator we are gonna make will take the length of the password as an input and will generate a random password of the same size.

**Here's an example:**

**Input:**

```bash
Enter the length of the password: 7
```

**Output:** 

```bash
5:$v9<,
```

So here, when we ran the code we were asked for the size of the password to be generated. We entered the **`7`** as the input. And we got a random 7-digit password as output. 

You can also see that our password consists of numbers, alphabets & symbols which are highly recommended to be used in a password to make it stronger and difficult to guess & brute force. 

Alright now since you know how our password generator is going to work, now let's get into coding.

## Let's Code

Alright, so the very first thing we do is to import required modules for the project. In this case, since we need to create random strings as mentioned before, we are going to make use of **`random`** module. So let's quickly import it.

```python
import random
```

Now let's get the input for the length of the password to be generated.

```python
pass_len = int(input("Enter the length of the password: "))
```

Here we go! We are going to store the input in `**pass_len**` variable. Also notice that we are making use of **`int()`** function. That's because the input we get from the user will be in **`string`** datatype but to make use of this input we first need to convert it into an **`int`** datatype. **`int()`** will convert our input from **`string`** to **`int`**.

Now let's move to the next step.

```python
pass_data = "qwertyuiopasdfgjklzxcvbnm1234567890[];',./!@#$%^&*()_+:<>?"
```

Here we have simply defined a string which consists of all the alphabets, numbers & symbols which will be used to generate the password. You can customize this variable as per your wish. If you want to create a password consisting only of alphabets then you can get rid of symbols and numbers from this variable and the resulting password will be consisting only of alphabets.

Let's Finish it!!! 

```python
password = "".join(random.sample(pass_data, pass_len))
```

Here on this final step, we have used **`join()`** function which will join our generated password to an empty string on the left. 

Within **`join()`**, we have **`random.sample()`** function which does the main job of generating a password.

**`random.sample()`** takes in our **`pass_data`** variable which consists of our raw password characters and the **`pass_len`** variable which is the user input from the user regarding the length of the password. Basically what it will do is that it will take random characters from **`pass_data`** variable of length **`pass_len`**.

Now finally let's print out the final output!

```python
print(password)
```

## Source Code

You can find the complete source code of this project here -

[mindninjaX/Python-Projects-for-Beginners](https://github.com/mindninjaX/Python-Projects-for-Beginners/tree/master/Password%20Generator)

## Support

Thank you so much for reading! I hope you found this beginner project useful. 

If you like my work please consider [Buying me a Coffee](https://buymeacoff.ee/mindninjaX) so that I can bring more projects, more articles for you.

![https://dev-to-uploads.s3.amazonaws.com/i/5irx7eny4412etlwnc64.png](https://dev-to-uploads.s3.amazonaws.com/i/5irx7eny4412etlwnc64.png)

Also if you have any questions or doubts feel free to contact me on [Twitter](https://twitter.com/mindninjaX), [LinkedIn](https://www.linkedin.com/in/mindninjax/) & [GitHub](https://github.com/mindninjaX). Or you can also post a comment/discussion & I will try my best to help you :D