写作防止遗忘。
最近在github上找了一些练手的小项目,自己也跟着做一下,并记录下来。
这是一个根据给定长度返回的一个由字母、数字和特殊字符随机组成的字符串。
import random
import math
alpha = "abcdefghijklmnopqrstuvwkyz"
num = "0123456789"
special = "@#$%&*"
pass_len = int(input("Enter Password Lenght:"))
# 字母为密码长度的一半
alpha_len = pass_len // 2
# 数字为密码长度 * 0.3,并向上取整
num_len = math.ceil(pass_len * 30 / 100)
# 剩余为特殊符号
special_len = pass_len - (alpha_len + num_len)
password = []
def generate_pass(lenght, array, is_alpha=False):
for i in range(lenght):
# 在(0, len(array) - 1)中等概率取一个整数,作为字符的下标
index = random.randint(0, len(array) - 1)
character = array[index]
if is_alpha:
# 如果是字母则有50%几率为大写
case = random.randint(0, 1)
if case == 1:
character = character.upper()
password.append(character)
generate_pass(alpha_len, alpha, True)
generate_pass(num_len, num)
generate_pass(special_len, special)
# 将密码打乱
random.shuffle(password)
# 将字符串列表拼接成字符串
print("".join(password))