设置一个变量strength_level用于记录密码强度,初值为0,满足一个条件加1!
检测字符串是否只有数字组成 | is.isnumeric() |
---|---|
检测字符串是否只由字母组成 | is.isalpha() |
检测字符串中所有的字母是否都为小写 | is.islower() |
检测字符串中所有的字母是否都为大写 | is.isupper() |
"""
作者:Troublemaker
功能:判断密码强度
版本:1.0
日期:2019/11/2 20:25
脚本:1.0.py
"""
def main():
"""
主函数
"""
strength_level = 0
print("密码要求:长度至少8位,需要包含字母和数字")
input_psd = input("请输入您的密码:")
# 判断密码强度
if input_psd.isnumeric():
print("密码不能只包含数字")
else:
strength_level += 1
if input_psd.isalpha():
print("密码不能只包含字母")
else:
strength_level += 1
if len(input_psd) < 8:
print("密码不能少于八位")
else:
strength_level += 1
if strength_level == 3:
print("恭喜您,密码设置成功")
if __name__ == "__main__":
main()
"""
作者:Troublemaker
功能:判断密码强度
版本:1.0
日期:2019/11/2 20:25
脚本:1.0.py
"""
def main():
"""
主函数
"""
# 初始化参数
strength_level = 0 # 密码强度
times = 0 # 记录密码次数
print("密码要求:长度至少8位,需要包含字母和数字")
input_psd = input("请输入您的密码:")
times += 1
# 设置循环
while times <= 5:
# 判断密码强度
if input_psd.isnumeric():
print("密码不能只包含数字")
else:
strength_level += 1
if input_psd.isalpha():
print("密码不能只包含字母")
else:
strength_level += 1
if len(input_psd) < 8:
print("密码不能少于八位")
else:
strength_level += 1
if strength_level == 3:
print("恭喜您,密码设置成功")
break # 设置成功,直接跳出这个While循环
else:
input_psd = input("请输入您的密码:")
times += 1
# 友好的交互
if strength_level != 3:
print("密码设置次数过多,请稍后再试")
if __name__ == "__main__":
main()
文件操作步骤:
打开文件:建立文件与程序的关联
操作文件:
打开模式 | 含义 |
---|---|
“r” | 只读,当文件不存时,报错 |
“w” | 只写,当文件不存在时,自动创建 |
“a” | 在文件末尾附加 |
“r+” | 读和写 |
关闭文件:终止程序与文件的关联
可以用with结构操作文件,当你不需要操作时,自动关闭文件 。
with opne(filename, "r") as f:
# 对文件的操作
# 就不需要用close()关闭文件了
"""
作者:Troublemaker
功能:判断密码强度
版本:3.0+4.0
日期:2019/11/3 10:25
脚本:3.0.py
"""
def main():
"""
主函数
"""
# 初始化的参数
strength_level = 0 # 密码强度
times = 0 # 记录密码次数
print("密码要求:长度至少8位,需要包含字母和数字")
input_psd = input("请输入您的密码:")
times += 1
# 设置循环
while times <= 5:
# 判断密码强度
if input_psd.isnumeric():
print("密码不能只包含数字")
else:
strength_level += 1
if input_psd.isalpha():
print("密码不能只包含字母")
else:
strength_level += 1
if len(input_psd) < 8:
print("密码不能少于八位")
else:
strength_level += 1
# 写入到文件, 放这里会保存你所有尝试的密码
file_path = "strength_level.txt"
with open(file_path, 'a', encoding='utf-8') as f:
# write()里面写入的必须是字符串str格式的
f.write("密码: " + input_psd + " , 强度:" + str(strength_level) + "\n")
if strength_level == 3:
print("恭喜您,密码设置成功")
break # 设置成功,直接跳出这个While循环
else:
strength_level = 0 # 这句话是让每次尝试后强度重新为0,没有它会出现bug
input_psd = input("请输入您的密码:")
times += 1
# 友好的交互
if strength_level != 3:
print("密码设置次数过多,请稍后再试")
# if strength_level == 3: # 放这里的话,就只保存设置通过的密码
# # 写入文件,保存密码以及对应的强度
# file_path = "strength_level.txt"
# with open(file_path, 'a', encoding='utf-8') as f:
# # write()里面写入的必须是字符串str格式的
# f.write("密码: " + input_psd + " , 强度:" + str(strength_level) + "\n")
# 读取保存的密码
with open(file_path, 'r', encoding="utf-8") as f:
txt = f.readline() # 只读第一行
print(txt)
contents = f.readlines() # 返回一个列表,把每一行当成列表中的一个元素
for content in contents: # 遍历列表,把其中的值都打印出来
print(content)
if __name__ == "__main__":
main()
类(class):某种类型集合的描述
属性:类本身的一些特性
方法:类所能实现的行为
类的定义
class ClassName
-nit__(self) 构造函数:初始化对象的各属性
self代表类的实例
封装
继承
多态
"""
作者:Troublemaker
功能:判断密码强度
版本:3.0+4.0
日期:2019/11/3 10:25
脚本:3.0.py
"""
class Read_Write:
"""
读写操作类
"""
def __init__(self, flie_path):
"""初始化属性"""
self.flie_path = flie_path
def write_in(self, content):
"""写文件的方法"""
with open(self.flie_path, 'a', encoding='utf-8') as f:
# write()里面写入的必须是字符串str格式的
f.write(content)
def read_in(self):
"""读文件的方法"""
with open(self.flie_path, 'r', encoding="utf-8") as f:
contents = f.readlines() # 返回一个列表,把每一行当成列表中的一个元素
for content in contents: # 遍历列表,把其中的值都打印出来
print(content)
class Password:
"""
密码相关的类
"""
def __init__(self, password):
self.password = password
self.strength_level = 0
def check_password(self):
"""检测密码的过程"""
if self.password.isnumeric():
print("密码不能只包含数字")
else:
self.strength_level += 1
if self.password.isalpha():
print("密码不能只包含字母")
else:
self.strength_level += 1
if len(self.password) < 8:
print("密码不能少于八位")
else:
self.strength_level += 1
def main():
"""
主函数
"""
# 初始化的参数
times = 0 # 记录密码次数
file_path = "strength_level.txt" # 文件路径
print("密码要求:长度至少8位,需要包含字母和数字")
input_psd = input("请输入您的密码:")
times += 1
# 实例化类
password_check = Password(input_psd)
read_and_write = Read_Write(file_path)
# 设置循环
while times <= 5:
# 判断密码强度
password_check.check_password()
# 写入到文件, 放这里会保存你所有尝试的密码
content = "密码: " + input_psd + " , 强度:" + str(password_check.strength_level) + "\n"
read_and_write.write_in(content)
if password_check.strength_level == 3:
print("恭喜您,密码设置成功")
break # 设置成功,直接跳出这个While循环
else:
password_check.strength_level = 0 # 这句话是让每次尝试后强度重新为0,没有它会出现bug
input_psd = input("请输入您的密码:")
password_check = Password(input_psd)
times += 1
# 友好的交互
if password_check.strength_level != 3:
print("密码设置次数过多,请稍后再试")
# 读取文件
read_and_write.read_in()
if __name__ == "__main__":
main()
"""
作者:Troublemaker
功能:判断密码强度
版本:1.0
日期:2019/11/3 20:25
脚本:1.0.py
"""
def main():
"""
主函数
"""
strength_level = 0
print("密码要求:长度至少8位,需要包含大小写字母,需要包含数字,需要有特殊符号")
input_psd = input("请输入您的密码:")
# 判断密码强度
if input_psd.isnumeric():
print("密码不能只包含数字")
else:
strength_level += 1
if input_psd.isalpha():
print("密码不能只包含字母")
else:
if input_psd.islower() or input_psd.isupper():
print("密码中的字母不能全为大写或者小写")
else:
strength_level += 1
if len(input_psd) < 8:
print("密码不能少于八位")
else:
strength_level += 1
# 判断是否有特殊字符
string = "~!@#$%^&*()_+-*/<>,.[]\/"
for i in string:
if i in input_psd:
strength_level += 1
break
# 这边如果把else和上面if对齐,会打印很多次
else:
print("密码中缺少特殊字符")
if strength_level == 4:
print("恭喜您,密码设置成功")
if __name__ == "__main__":
main()