mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-30 16:31:08 +00:00
6acd7fb5ce
* Wrap lines that go beyond GiHub Editor * flake8 --count --select=E501 --max-line-length=127 * updating DIRECTORY.md * Update strassen_matrix_multiplication.py * fixup! Format Python code with psf/black push * Update decision_tree.py Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
78 lines
2.1 KiB
Python
78 lines
2.1 KiB
Python
"""Password generator allows you to generate a random password of length N."""
|
|
from random import choice, shuffle
|
|
from string import ascii_letters, digits, punctuation
|
|
|
|
|
|
def password_generator(length=8):
|
|
"""
|
|
>>> len(password_generator())
|
|
8
|
|
>>> len(password_generator(length=16))
|
|
16
|
|
>>> len(password_generator(257))
|
|
257
|
|
>>> len(password_generator(length=0))
|
|
0
|
|
>>> len(password_generator(-1))
|
|
0
|
|
"""
|
|
chars = tuple(ascii_letters) + tuple(digits) + tuple(punctuation)
|
|
return "".join(choice(chars) for x in range(length))
|
|
|
|
|
|
# ALTERNATIVE METHODS
|
|
# ctbi= characters that must be in password
|
|
# i= how many letters or characters the password length will be
|
|
def alternative_password_generator(ctbi, i):
|
|
# Password generator = full boot with random_number, random_letters, and
|
|
# random_character FUNCTIONS
|
|
# Put your code here...
|
|
i = i - len(ctbi)
|
|
quotient = int(i / 3)
|
|
remainder = i % 3
|
|
# chars = ctbi + random_letters(ascii_letters, i / 3 + remainder) +
|
|
# random_number(digits, i / 3) + random_characters(punctuation, i / 3)
|
|
chars = (
|
|
ctbi
|
|
+ random(ascii_letters, quotient + remainder)
|
|
+ random(digits, quotient)
|
|
+ random(punctuation, quotient)
|
|
)
|
|
chars = list(chars)
|
|
shuffle(chars)
|
|
return "".join(chars)
|
|
|
|
# random is a generalised function for letters, characters and numbers
|
|
|
|
|
|
def random(ctbi, i):
|
|
return "".join(choice(ctbi) for x in range(i))
|
|
|
|
|
|
def random_number(ctbi, i):
|
|
pass # Put your code here...
|
|
|
|
|
|
def random_letters(ctbi, i):
|
|
pass # Put your code here...
|
|
|
|
|
|
def random_characters(ctbi, i):
|
|
pass # Put your code here...
|
|
|
|
|
|
def main():
|
|
length = int(input("Please indicate the max length of your password: ").strip())
|
|
ctbi = input(
|
|
"Please indicate the characters that must be in your password: "
|
|
).strip()
|
|
print("Password generated:", password_generator(length))
|
|
print(
|
|
"Alternative Password generated:", alternative_password_generator(ctbi, length)
|
|
)
|
|
print("[If you are thinking of using this passsword, You better save it.]")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|