python作业/练习/实战:生成随机密码
作业要求
1、写一个函数,函数的功能是生成一批密码,存到文件里面
def gen_password(num):
#num代表生成多少条密码
2、密码复杂度要求
1)长度在,8-16位之间
2)密码必须包括大写字母、小写字母、数字、特殊字符
3)密码不能重复
3、生成的密码保存到文件里面
方法1提示
1、先分别从大写字母、小写字母、数字、特殊字符中各取一个 4个
2、再从所有的字符里面取4-12个,和第一部获取到的结果拼起来 8-16
import string,random
def gen_password():
for i in range(num):
pwd_len=random.randint(8,16) #总长度
upper =random.sample(string.ascii_uppercase,1) # choice只返回一个字符,sample返回一个字符串,所以这里我们使用sample
lower = random.sample(string.ascii_lowercase,1) # 在所有小写字母中随机选择一个
digits = random.sample(string.digits,1)
punctuation = random.sample(string.punctuation,1)
other=random.sample(string.ascii_letters+string.digits+string.punctuation,pwd_len-4) #剩余长度为总长度-4,在所有的字母符号数字中取 res=upper+lower+digits+punctuation+other #把上面的拼接在一起
random.shuffle(res) # 打乱顺序
# print(''.join(res))
return ''.join(res)
#将密码保存到文件中
all_passwords=set()
num=int(input('请输入要产生多少条密码 :').strip())
while len(all_passwords)!=num: #使用集合长度作为循环次数
res=gen_password()+'\n'
all_passwords.add(res)
with open('pwd.txt','w',encoding='utf-8') as fw:
fw.writelines(all_passwords)
方法2提示
所有的里面取8-16位,然后看是否和数字大小写字母特殊符号有交集
import string,random def gen_password2():
pwd_len = random.randint(8, 16) # 总长度
all_str = string.ascii_letters + string.digits + string.punctuation # 全部
res=set(random.sample(all_str,pwd_len)) #在全部里取长度,先换成集合,后面好取交集
if res & set(string.ascii_lowercase) and res & set(string.ascii_lowercase) and res & set(string.digits) and res & set(string.punctuation): # 取交集
return ''.join(res) # 交集里都有,说明对啦,可以返回res了
return gen_password2()
#将密码保存到文件中
all_passwords=set()
num=int(input('请输入要产生多少条密码 :').strip())
while len(all_passwords)!=num: #使用集合长度作为循环次数
res=gen_password2()+'\n'
all_passwords.add(res)
with open('pwd.txt','w',encoding='utf-8') as fw:
fw.writelines(all_passwords)
python作业/练习/实战:生成随机密码的更多相关文章
- python作业/练习/实战:生成双色球小程序
作业要求: 每注投注号码由6个红色球号码和1个蓝色球号码组成.红色球号码从1--33中选择:蓝色球号码从1--16中选择 代码范例 import random all_red_ball = [str( ...
- python作业/练习/实战:3、实现商品管理的一个程序
作业要求 实现一个商品管理的一个程序,运行程序有三个选项,输入1添加商品:输入2删除商品:输入3 查看商品信息1.添加商品: 商品名称:xx 商品如果已经存在,提示商品已存在 商品价格:xx数量只能为 ...
- python作业/练习/实战:2、注册、登录(文件读写操作)
作业要求 1.实现注册功能输入:username.passowrd,cpassowrd最多可以输错3次3个都不能为空用户名长度最少6位, 最长20位,用户名不能重复密码长度最少8位,最长15位两次输入 ...
- python作业/练习/实战:1、简单登录脚本
作业要求 写一个登陆的小程序 username = xiaoming passwd = 123456 1.输入账号密码,输入正确就登陆成功, 提示:欢迎xxxx登陆,今天的日期是xxx. 2.输入错误 ...
- python作业/练习/实战:下载QQ群所有人的头像
步骤与提示:1.在腾讯群网页中进入任意一个群,获取相关信息,可以用postman是试一下,可以看到我们要的是mems里面的数据,需要获取到QQ号和群名片,如果没有群名片的话取昵称2.根据QQ号下载头像 ...
- Python实现自动更改系统用户密码,生成随机密码
算是一个实用的例子,定制系统任务,并将随机密码上传至日志服务器,实现定期修改密码: 部分代码: 1 #!/usr/bin/env python 2 #coding:utf-8 3 import ran ...
- python作业ATM(第五周)
作业需求: 额度 15000或自定义. 实现购物商城,买东西加入 购物车,调用信用卡接口结账. 可以提现,手续费5%. 支持多账户登录. 支持账户间转账. 记录每月日常消费流水. 提供还款接口. AT ...
- 《Python高效开发实战》实战演练——建立应用2
为了在项目中开发符合MVC架构的实际应用程序,需要在项目中建立Django应用.每个Django项目可以包含多个Django应用.建立应用的语法为: #python manage.pystartapp ...
- Python接口测试框架实战与自动化进阶☝☝☝
Python接口测试框架实战与自动化进阶☝☝☝ 一.fiddler在工作中的运用 1.如何抓接口 抓紧手机端接口 ①.在电脑终端输入:ipconfig ,找到电脑ip ②.打开手机,连接WiFi, ...
随机推荐
- 牛客 在其他数都出现k次的数组中找到出现1次的数
题目链接:https://www.nowcoder.com/practice/26e46f1f5e0d48c4b9ba13fe3e8d0ec6?tpId=101&tqId=33216& ...
- Redis初阶
- Linux目录及说明
Linux目录及说明 [常见目录说明] 目录 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里. /etc 存放系统管理和配置文件 /home 存放所有用户文件的根目 ...
- BZOJ 4657 (网络流)
题面 Nick最近在玩一款很好玩的游戏,游戏规则是这样的: 有一个n*m的地图,地图上的每一个位置要么是空地,要么是炮塔,要么是一些BETA狗,Nick需要操纵炮塔攻击BETA狗们. 攻击方法是:对于 ...
- linux缺頁異常處理--內核空間[v3.10]
缺頁異常被觸發通常有兩種情況—— 1.程序設計的不當導致訪問了非法的地址 2.訪問的地址是合法的,但是該地址還未分配物理頁框 下面解釋一下第二種情況,這是虛擬內存管理的一個特性.盡管每個進程獨立擁有3 ...
- 使用雪花算法为分布式下全局ID、订单号等简单解决方案考虑到时钟回拨
1.snowflake简介 互联网快速发展的今天,分布式应用系统已经见怪不怪,在分布式系统中,我们需要各种各样的ID,既然是ID那么必然是要保证全局唯一,除此之外,不同当业务还需要不同 ...
- vue证明题三,vue项目的包结构和配置
用vue-cli创建的项目带有自动配置好的包结构,包结构都是固定的. 关于详细的解释,网上多得是,只说下最重要的内容 1.vue项目包结构和端口号配置 这里笔者下了个HBuilderX来写代码. 2. ...
- SQL数据库—<2>数据库基本操作(CRUD)
学习基本操作语句之前先简单了解数据库的基本数据类型: 数据类型: 二进制数据:以十六进制形式存储 固定长度:binary 可变长度:varbinary 字符数据 ...
- 支持跨域的html元素
image javascript iframe link
- 安装双系统Windows+Centos安装完成之后提示双系统选项菜单!
原因:在windows下安装centos系统完成之后重启无法显示windows系统菜单选项 1.安装Windows系统 2.安装Centos系统 3.在Centos系统中安装ntfs-3g yum i ...