编写程序,生成随机密码并验证其是否为强密码,若字符串中同时包含英文字母大小写、数字和标点符号则认为是强密码。
(1)解题思路
导入random、string模块,利用random.sample函数生成指定数量的随机字符,因为生成的随机密码可能包含英文字母大小写、数字和标点符号,所以将字符随机生成的范围指定为:string.digits+string.ascii_letters+string.punctuation,
然后利用’’.join()将这些字符拼接成字符串,这里我选择生成长度为10的随机字符串。
接着遍历字符串中的每一个字符,判断是否是数字,如果是,则数字数量p_digit+1,大小写字母的判断如是,如果既不是数字也不是大小写字母,那该字符就是特殊符号,即标点符号,标点符号数量p_other+1,最后如果数字、大小写字母、标点符号的数量都大于等于1,即都存在,那么判断这个密码是强密码,否则不是强密码。
(2)代码
import random
import string
password=''.join(random.sample(string.digits+string.ascii_letters+string.punctuation,10))
print("生成的随机密码为:",password)
p_digit=0
p_lower=0
p_upper=0
p_other=0
for i in password:
if i.isdigit():
p_digit+=1
elif i.islower():
p_lower+=1
elif i.isupper():
p_upper+=1
else:
p_other+=1
if p_digit>=1 and p_lower>=1 and p_upper>=1 and p_other>=1:
print("此密码是强密码")
else:
print("此密码不是强密码")