代码如下:
from string import ascii_uppercase,ascii_lowercase,digits
x=[set(ascii_lowercase),set(ascii_lowercase),set(digits),set(',._')]
print(*x)
y={1:'弱',2:'较弱',3:'较强',4:'强'}
passord=set(input('请输入密码:'))
print(passord)
if (not passord) or (passord-set().union(*x)) or (len(passord)<6):
print('不适合作密码')
else:
num=sum(map(lambda m:bool(m&passord),x))
print(y.get(num))
以上passord-set()是什么意思?passord-set().union(*x)又是什么意思?
set()就是一个空的集合
set().union是做并集
x是个列表,*x就是把列表打开,重新变成4个set
那么set().union(*x)其实就是把x里的4个set做并集
passord本身是把input强制转换成了set类型
那么用passord-set,就是两个集合做差集
集合的四大运算:
差集: - ,difference
并集: |, union
交集::&,intersection
对称差集:^,symmetric_difference
set().union(x)是合并两个集合,重复元素只会出现一次。也就是这一步你的x只剩set(ascii_lowercase),set(',._'),set(digits),但是顺讯全打乱了。set函数是一个去重操作。passord-set().union(x)是只能输入x中的字符,也就是说你用“”、,=什么的是不行的,会显示不适合作为密码