密码生成器

randomchar.py

import random


class RandomChar:
    def __init__(self):
        self.all_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
        self.all_lowercase = 'abcdefghijklmnopqrstuvwxyz'
        self.all_digits = '0123456789'
        self.all_specials = '~!@#$%^&*'

    def pick_random_item(self, sequence):
        random_int = random.randint(0, len(sequence) - 1)
        return sequence[random_int]

    def uppercase(self):
        return self.pick_random_item(self.all_uppercase)

    def lowercase(self):
        return self.pick_random_item(self.all_lowercase)

    def digit(self):
        return self.pick_random_item(self.all_digits)

    def special(self):
        return self.pick_random_item(self.all_specials)

    def anyone(self):
        return self.pick_random_item(self.all_uppercase + self.all_lowercase + self.all_digits + self.all_specials)

password_generator.py

import randomchar


def generate_password(length):
    if length < 4:
        raise ValueError('密码至少为 4 位')

    random_char = randomchar.RandomChar()

    password  = random_char.uppercase()
    password += random_char.lowercase()
    password += random_char.digit()
    password += random_char.special()

    count = 5
    while count <= length:
        password += random_char.anyone()
        count += 1

    return password


password_length = input('请输入密码长度(8~20):')
password_length = int(password_length)

if password_length < 8 or password_length > 20:
    raise ValueError('密码长度不符')

password = generate_password(password_length)
print(password)

results matching ""

    No results matching ""