随机生成密码作业
1、写一个生产密码的程序,输入几,就产生几条密码,密码产生的不重复。
要求密码:长度6 - 12,密码必须包含
大写字母、小写字母、数字
产生完密码后存到一个文件里面
1.首先输入生成密码的条数 需要校验输入的要是数字
2.根据输入,生成几条密码
3.生成的密码长度要是随机的,且再6-12之间
4.内容要包含大写字母、小写字母、数字
5.生产后的密码,写在文件中,每次生成密码要不重复
string中的常用的方法:
Some strings for ctype-style character classification
whitespace = ' \t\n\r\v\f'
ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'
ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ascii_letters = ascii_lowercase + ascii_uppercase
digits = '0123456789'
hexdigits = digits + 'abcdef' + 'ABCDEF'
octdigits = '01234567'
punctuation = """!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""
printable = digits + ascii_letters + punctuation + whitespace
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 方法一 import string import random def create_pa(): start = random.choice(string.digits) + random.choice(string.ascii_lowercase) + random.choice(string.ascii_uppercase) end = random.sample(string.digits + string.ascii_letters,random.randint( 6 , 12 ) - 3 ) end.append(start) random.shuffle(end) #洗牌 passwerd = ''.join(end) print (passwerd) return passwerd create_pa() def run(): number = input ( '输入条数:' ).strip() password_set = set () if number.isdigit(): while len (password_set) ! = int (number): result = create_pa() password_set.add(result + '\n' ) with open ( 'pasw.txt' , 'w' ,encoding = 'utf-8' ) as Wfile: Wfile.writelines(password_set) def create_password(): start = random.choice(string.digits) + random.choice(string.ascii_lowercase) \ + random.choice(string.ascii_uppercase) end = random.sample(string.digits + string.ascii_letters,random.randint( 6 , 12 ) - 3 ) end.append(start) random.shuffle(end) password = ''.join(end) return password |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # 方法二 import string import random def create_password2(): number_set = set (string.digits) upper_set = set (string.ascii_uppercase) lower_set = set (string.ascii_lowercase) while True : before_password = random.sample(string.digits + string.ascii_uppercase + string.ascii_lowercase,random.randint( 6 , 12 )) #生成一个6-12位的字符,再大写、小写、数字的组合之间 p = set (before_password) #存在几何种去重 if number_set & p and upper_set & p and lower_set & p: #如果生成的字符和大写、小写、数字都有交集,则返回 return ''.join(p) def run(): number = input ( "请输入产生的条数" ).strip() #1000 password_set = set () if number.isdigit(): while len (password_set)! = int (number): #0,1000 # result = create_password() result = create_password2() password_set.add(result + '\n' ) with open ( 'passwords.txt' , 'w' ) as fw: fw.writelines(password_set) run() |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2017-05-16 Python中基本的读文件和简单数据处理
2017-05-16 上传和下载文件
2017-05-16 fiddler与Charles的区别
2017-05-16 修改请求和返回报文
2017-05-16 charles抓包--手机端