判断密码强度(Python)
⽤户设置密码后,判断密码强度是否合格,判断规则:1.密码长度不⼩于8;2.密码中必须包含字母;3.密码中必须包含数字。
1.0:isnumeric()函数可以判断字符串中是否只含有数字,若字符串中只含数字,返回True;isalpha()函数可以判断字符串字符串中是否只含有字母,若字符串中只包含字母,返回True。初始化密码强度strength_level为0,每满⾜⼀个判断规则就加1。判断密码强度时,只要含有字母(不是只含有字母)即可,因此对输⼊的密码字符串进⾏遍历,遇到字母后停⽌遍历,如果密码中含有字
母,strength_level+1。对数字的判断同样处理。当密码强度为3时,给⽤户提⽰:密码强度合格,否则说明不合格原因。
"""
判断密码强度
1.0:密码长度⼤于8
包含数字
包含字母
"""
def check_number_exit(password):
"""
判断是否含有数字
"""
for x in password:
if x.isnumeric():
return True
return False
def check_letter_exit(password):
"""
判断是否含有字母
"""
for x in password:
if x.isalpha():
return True
return False
def main():
"""
主函数
"""
password_str = input("请输⼊密码:")
strength_level = 0
#规则1:密码长度⼤于8
if len(password_str) >= 8:
strength_level += 1
else:
print("抱歉!密码长度应不⼩于8位!")
#规则2:包含数字
if check_number_exit(password_str):
strength_level +=1
else:
print("抱歉!密码中应包含数字!")
#规则3:包含数字
if check_letter_exit(password_str):
strength_level +=1
else:
print("抱歉!密码中应包含字母!")
if strength_level ==3:
print("您的密码强度合格!")
else:
print("您设置的密码强度不合格!")
if __name__=="__main__":
main()
2.0:主要是终⽌循环(break)的⽤法。对判断是否含有字母和数字的函数进⾏了优化,同时改进主函数,使⽤户可以多次设置密码。设置输⼊密码次数 times=5,⽤户输⼊密码不合格时,提醒⽤户重新输⼊,同时times-1,若⽤户输⼊的密码合格,则直接跳出循环。当⽤户输⼊5 次后密码仍然不合格时,提醒⽤户输⼊次数过多。
"""
判断密码强度
2.0: 终⽌循环,限定输⼊密码的次数
"""
def check_number_exit(password):
"""
判断是否含有数字
"""
number = False
for x in password:
if x.isnumeric():
number = True
break
return number
def check_letter_exit(password):
"""
判断是否含有字母
"""
letter = False
for x in password:
if x.isalpha():
letter = True
break
return letter
def main():
"""
主函数
"""
times = 5
while(times >0 ):
password_str = input("请输⼊密码:")
strength_level = 0
#规则1:密码长度⼤于8isalpha 函数
if len(password_str) >= 8:
strength_level += 1
else:
print("抱歉!密码长度应不⼩于8位!")
#规则2:包含数字
if check_number_exit(password_str):
strength_level +=1
else:
print("抱歉!密码中应包含数字!")
#规则3:包含数字
if check_letter_exit(password_str):
strength_level +=1
else:
print("抱歉!密码中应包含字母!")
if strength_level ==3:
print("您的密码强度合格!")
break
else:
print("您设置的密码强度不合格!")
times -= 1
print()
if times == 0:
print("您输⼊密码次数超过已5次,暂不可⽤!")
if __name__=="__main__":
main()
3.0:将设置的密码及对应的强度以及强度级别保存到⽂件中。定义密码强度级别,1:弱;2:中;2:强。⽂件的操作:f = open(),括号中输⼊⽂件路径以及打开⽅式(r:只读,⽂件不存在时报错;w:只写,⽂件不存在时⾃动新建⽂件;r+:可读可写;a:可以持续性输⼊,保留原来的输⼊结果)。f.write()写⼊内容。f.close()关闭⽂件。⽂件打开要在判断密码强度是否合格之前,否则只能保存合格的密码。
"""
判断密码强度
3.0:将设置的密码以及对应的强度保存到⽂件中
"""
def check_number_exit(password):
"""
判断是否含有数字
"""
number = False
for x in password:
if x.isnumeric():
number = True
break
return number
def check_letter_exit(password):
"""
判断是否含有字母
"""
letter = False
for x in password:
if x.isalpha():
letter = True
break
return letter
def main():
times = 5
while(times >0 ):
password_str = input("请输⼊密码:")
strength_level = 0
#规则1:密码长度⼤于8
if len(password_str) >= 8:
strength_level += 1
else:
print("抱歉!密码长度应不⼩于8位!")
#规则2:包含数字
if check_number_exit(password_str):
strength_level +=1
else:
print("抱歉!密码中应包含数字!")
#规则3:包含数字
if check_letter_exit(password_str):
strength_level +=1
else:
print("抱歉!密码中应包含字母!")
if strength_level == 1:
level = "弱"
elif strength_level == 2:
level = "中"
else:
level = "强"
f = open("password.","a")
f.write("密码:{}\t强度:{}\t级别:{}\n".format(password_str,strength_level,level))
f.close()
if strength_level ==3:
print("您的密码强度合格!")
break
else:
print("您设置的密码强度不合格!")
times -= 1
print()
if times == 0:
print("您输⼊密码次数超过已5次,暂不可⽤!")
if __name__=="__main__":
main()
4.0:读取⽂件中的密码(只截取读取⽂件的代码)。以只读的⽅式打开⽂件,g.read():读取所有的⽂件信息,返回⼀个包含所有⽂件信息的字符串;g.readline()返回值为⽂件下⼀⾏内容的字符串;g.readlines():返回值为整个⽂件内容的列表,每项是以换⾏为结尾的⼀⾏字符串。关于⽂件信息的遍历有两种⽅式:(1)for line in g (2)for line adlines()
g = open("password.", "r")
#read = g.read()
#print(read)
#line = g.readline()
#print(line)
#lines = g.readlines()
#print(lines)
#for line in g:
# print(line)
for line adlines():
print(line)
5.0:⾯向对象,定义⼀个密码⼯具类,⾸先定义密码属性,然后写⼊判断是否含有字母和数字的函数,最后写⼊计算密码强度的函数。
"""
判断密码强度
5.0:⾯向对象,定义⼀个密码⼯具类
"""
class PasswordTool:
#⾃⾝属性
def __init__(self,password):
self.password = password
self.strength_level = 0
self.level = ""
def check_number_exit(self):
number = False
for x in self.password:
if x.isnumeric():
number = True
break
return number
def check_letter_exit(self):
letter = False
letter = False
for x in self.password:
if x.isalpha():
letter = True
break
return letter
def password_tool(self):
if len(self.password) >= 8:
self.strength_level += 1
else:
print("抱歉!密码长度应不⼩于8位!")
if self.check_number_exit():
self.strength_level += 1
else:
print("抱歉!密码中应包含数字!")
if self.check_letter_exit():
self.strength_level += 1
else:
print("抱歉!密码中应包含字母!")
if self.strength_level == 1:
self.level = "弱"
elif self.strength_level == 2:
self.level = "中"
else:
self.level = "强"
def main():
times = 5
while(times >0 ):
password_str = input("请输⼊密码:")
example = PasswordTool(password_str)
example.password_tool()
f = open("password.","a")
f.write("密码:{}\t强度:{}\t级别:{}\n".format(example.password,example.strength_level,example.level)) f.close()
if example.strength_level ==3:
print("您的密码强度合格!")
break
else:
print("您设置的密码强度不合格!")
times -= 1
print()
if times == 0:
print("您输⼊密码次数超过已5次,暂不可⽤!")
if __name__=="__main__":
main()
6.0:定义⼀个⽂件操作类。将关于⽂件读写操作的函数写⼊类中。
"""
判断密码强度
6.0:⾯向对象,定义⼀个⽂件操作类
"""
class Filetool:
def __init__(self,filepath):
self.filepath = filepath
def read_from_file(self):
f = open(self.filepath,"r")
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论