如何用Python创建支持用户自定义选项的密码生成器
密码生成器代码问题修复
原代码存在的问题
- 输入的密码长度是字符串类型,未转换为整数,无法直接用于长度判断
- 初始化的
password是字符串类型,无法调用列表专属的append方法 - while循环逻辑写反,且未对password取长度判断,循环条件完全错误
- 函数返回的密码是列表格式,无法直接和字符串拼接输出
- 缺少边界判断:如果用户未选择任何字符类型,会导致从空列表取值报错
修复后完整代码
import random import string uppercase = list(string.ascii_uppercase) lowercase = list(string.ascii_lowercase) numbers = list(string.digits) symbols = list(string.punctuation) def generatePassword(passwordLength, useUppercase, useLowercase, useNumbers, useSymbols): charsToUse = [] password = [] if useUppercase: charsToUse.extend(uppercase) if useLowercase: charsToUse.extend(lowercase) if useNumbers: charsToUse.extend(numbers) if useSymbols: charsToUse.extend(symbols) # 边界处理:未选择任何字符类型时抛出提示 if not charsToUse: raise ValueError("至少需要选择一种字符类型") while len(password) < passwordLength: password.append(random.choice(charsToUse)) random.shuffle(password) return ''.join(password) print('====================================================') print('==== WELCOME TO THE ULTIMATE PASSWORD GENERATOR ====') print('====================================================') # 输入密码长度转换为整数 passwordLength = int(input('你想要生成多长的密码?: ')) useUppercase = bool(input('是否包含大写字母?输入任意内容为是,留空为否: ')) useLowercase = bool(input('是否包含小写字母?输入任意内容为是,留空为否: ')) useNumbers = bool(input('是否包含数字?输入任意内容为是,留空为否: ')) useSymbols = bool(input('是否包含符号?输入任意内容为是,留空为否: ')) print('----------------------------------------------------') print('正在生成密码...') print('----------------------------------------------------') print("你的新密码是: " + generatePassword(passwordLength, useUppercase, useLowercase, useNumbers, useSymbols)) print('====================================================')
内容的提问来源于stack exchange,提问作者identity7
相关产品推荐
相关产品推荐

