密码生成器
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)