1 问题
如何使用python制作一个密码生成器。
2 方法
通过类的程序来生成一个非常随机的密码
代码清单 1
代码语言:javascript复制def get_upper():
count = random.randint(1, 3)
return random.choices('ABCDEFGHIJKLMNOPQRSTUVWXYZ', k=count)
def get_special_char():
'''
生成特殊符号
:return:
'''
count = random.randint(1, 3)
return random.choices('!@$%^&*()_ ~', k=count)
def get_lower(count):
'''
生成小写字母和数字
:param count:
:return:
'''
string = 'abcdefghijklmnopqrstuvwxyz0123456789'
return random.choices(string, k=count)
def generate_password(length):
'''
生成指定长度的密码
:param length:
:return:
'''
if length < 6:
length = 6
lst = []
upper_lst = get_upper() # 大写
special_char = get_special_char() # 特殊字符
lst.extend(upper_lst)
lst.extend(special_char)
surplus_count = length - len(lst)
lower_lst = get_lower(surplus_count)
lst.extend(lower_lst)
# 将顺序打乱
random.shuffle(lst)
return ''.join(lst)
import random
def get_upper():
'''
生成大写字母
:return:
'''
count = random.randint(1, 3)
return random.choices('ABCDEFGHIJKLMNOPQRSTUVWXYZ', k=count)
def get_special_char():
'''
生成特殊符号
:return:
'''
count = random.randint(1, 3)
return random.choices('!@$%^&*()_ ~', k=count)
def get_lower(count):
'''
生成小写字母和数字
:param count:
:return:
'''
string = 'abcdefghijklmnopqrstuvwxyz0123456789'
return random.choices(string, k=count)
def generate_password(length):
'''
生成指定长度的密码
:param length:
:return:
'''
if length < 6:
length = 6
lst = []
upper_lst = get_upper() # 大写
special_char = get_special_char() # 特殊字符
lst.extend(upper_lst)
lst.extend(special_char)
surplus_count = length - len(lst)
lower_lst = get_lower(surplus_count)
lst.extend(lower_lst)
# 将顺序打乱
random.shuffle(lst)
return ''.join(lst)
if __name__ == '__main__':
print(generate_password(8))
print(generate_password(5))
print(generate_password(12))
3 结语
针对利用python制作密码生成器的问题,提出类的方法,通过程序设计实验,证明该方法是有效的,本文较为基础,算法较为模糊,在后期完善中可以将算法做的更为简单和清晰,增加更多的功能,例如能够写出一个代码简便美观的程序。