python 字符串
str.isnumeric() | 检测字符串是否只由数字组成 |
---|---|
str.isalpha() | 检测字符串是否只由字母组成 |
str.islower() | 检测字符串中的字母是否都为小写 |
str.isupper | 检测字符串中所有的字母是否都为大写 |
更多isxxx()方法请参考:
https://docs.python.org/3/library/stdtypes.html#string-methods
循环的终止
- break 语句
终止整个循环
例如:0除以2的余数为0,break 语句,终止整个循环,因此无输出
- continue 语句
只终止本次循环,而不终止整个循环的执行
例如:0除以2的余数为0,本次循环终止,但不终止整个循环的执行;
1除以2的余数不为0,循环不终止,继续运行,执行print()语句;
······
文件的基础 - 文件:存储在外部介质(如:硬盘)上的数据或信息的集合
- 文本文件:一般只有字符编码储存的文件,能够被最简单的文本编辑器直接读取
- 编码:信息从一种形式转换为另一种形式的过程
- 常用的编码:ASCLL,Unicode,UTF-8…
- 多行文本,用\n 表示换行
文件的操作
- 步骤:打开文件 —>操作文件(读、写等)—> 关闭文件
- 1.打开文件:建立文件与程序的关联
open (filename, mode)
filename : 文件名(包括路径名);
mmode : 打开模式
打开模式 | 含义 |
---|---|
r | 只读,文件不存在则报错 |
w | 只写,文件不存在则自动创建 |
a | 在文件末尾附加 |
r+ | 读写 |
-
2.操作文件:写入,读取,等
- 写入操作:将计算机内存向文件写入数据
- write() :将文本数据写入文件中
- writelines() : 将字符串列表写入文件中
-
3.关闭文件:终止程序与文件的关联
- close()
-
4.读取操作:从文件中读取数据到计算机内存中
-
read() :返回值为包含整个文件内容的一个字符串
-
readline() :返回值为文件下一行内容的字符串
-
readlines() :返回值为整个文件内容的列表,么想是以换行符为结尾的一行字符串
-
文件的遍历
f = open ('tmp.txt','r')
for line in f.readlines() :
#处理一行数据
pass
f.close()
f = open ('tmp.txt','r')
for line in f:
#处理一行数据
pass
f.close()
面向过程VS面向对象
-
面向过程(POP):以程序执行过程为设计流程的编程思想(例:流程图)
-
面向对象(OOP)以事务为中心的编程思想
-
什么是对象(Object)?
-
现实世界找那个的对象:属性、行为
-
对象例子:
波斯猫,属性:品种、颜色、大小
行为:叫、捉老鼠 -
类(class):某种类型集合的描述
-
属性:类本身的一种特性
-
方法:类所能实现的行为
-
类的定义:
class ClassName
__init __(self)构造函数 : 初始化对象的各属性
self代表的类的实例
类到对象,是一个实例化的过程
对象到类,是一个抽象的过程
面向对象特点 -
封装
将数据及相关操作打包在一起
支持代码复用 -
继承
子类(subclass)借用父类(superclass)
避免重复操作,提升代码复用程度
定义 class ClassName (SuperClassName) -
多态
在不同情况下用同一个函数名启用不同方法
灵活性
版本:1.0
"""
作者:陈洁
功能:判断密码强度
版本:1.0
日期:08/10/2019
"""
def check_number_exist(password_str):
"""
判断字符中是否含有数字
"""
for c in password_str:
if c.isnumeric():
#当函数在运行中,遇到return语句会提前终止函数,跳出函数
return True
return False
def check_letter_exist(password_str):
"""
判断字符中是否含有字母
"""
for c in password_str:
if c.isalpha():
return True
return False
def main():
"""
主函数
"""
password = input('请输入密码:')
#密码强度
strength_level = 0
#规则一:密码强度大于8
if len(password) >= 8:
strength_level += 1
else:
print('密码强度要求至少8位!')
#规则二:包含数字
if check_number_exist(password):
strength_level += 1
else:
print('密码要求包含数字!')
#规则三:包含字母
if check_letter_exist(password):
strength_level += 1
else:
print('密码要求包含字母!')
if strength_level == 3:
print('恭喜!密码强度合格!')
else:
print('抱歉!密码强度不合格!')
if __name__ =='__main__':
main()
版本2.0
新增功能:限制尝次数,循环的终止
新使用知识点:循环的暂停和终止
"""
作者:陈洁
功能:判断密码强度
版本:2.0
日期:08/10/2019
2.0新增功能:限制尝次数,循环的终止
"""
def check_number_exist(password_str):
"""
判断字符中是否含有数字
"""
has_number = False
for c in password_str:
if c.isnumeric():
has_number = True
break
return has_number
def check_letter_exist(password_str):
"""
判断字符中是否含有字母
"""
has_letter = False
for c in password_str:
if c.isalpha():
has_letter = True
break
return has_letter
def main():
"""
主函数
"""
try_times = 5
while try_times >0:
password = input('请输入密码:')
#密码强度
strength_level = 0
#规则一:密码强度大于8
if len(password) >= 8:
strength_level += 1
else:
print('密码强度要求至少8位!')
#规则二:包含数字
if check_number_exist(password):
strength_level += 1
else:
print('密码要求包含数字!')
#规则三:包含字母
if check_letter_exist(password):
strength_level += 1
else:
print('密码要求包含字母!')
if strength_level == 3:
print('恭喜!密码强度合格!')
break
else:
print('抱歉!密码强度不合格!')
try_times -= 1
print()
if try_times <= 0:
print('尝试次数过多,密码设置失败!')
if __name__ =='__main__':
main()
版本3.0
新增功能:保存密码及强度到文件中
新使用知识点:文件的读写操作
"""
作者:陈洁
功能:判断密码强度
版本:2.0
日期:08/10/2019
2.0新增功能:限制尝次数,循环的终止
3.0新增功能:保存密码及强度到文件中
"""
def check_number_exist(password_str):
"""
判断字符中是否含有数字
"""
has_number = False
for c in password_str:
if c.isnumeric():
has_number = True
break
return has_number
def check_letter_exist(password_str):
"""
判断字符中是否含有字母
"""
has_letter = False
for c in password_str:
if c.isalpha():
has_letter = True
break
return has_letter
def main():
"""
主函数
"""
try_times = 5
while try_times >0:
password = input('请输入密码:')
#密码强度
strength_level = 0
#规则一:密码强度大于8
if len(password) >= 8:
strength_level += 1
else:
print('密码强度要求至少8位!')
#规则二:包含数字
if check_number_exist(password):
strength_level += 1
else:
print('密码要求包含数字!')
#规则三:包含字母
if check_letter_exist(password):
strength_level += 1
else:
print('密码要求包含字母!')
f = open('password_3.0.txt', 'a')
f.write('密码:{},强度:{}\n '.format(password , strength_level))
f.close()
if strength_level == 3:
print('恭喜!密码强度合格!')
break
else:
print('抱歉!密码强度不合格!')
try_times -= 1
print()
if try_times <= 0:
print('尝试次数过多,密码设置失败!')
if __name__ =='__main__':
main()
版本4.0
新增功能:读取文件中的密码
新使用知识点:读取文件
"""
作者:陈洁
功能:判断密码强度
版本:2.0
日期:09/10/2019
2.0新增功能:限制尝次数,循环的终止
3.0新增功能:保存密码及强度到文件中
4.0新增功能:读取文件中的密码
"""
def check_number_exist(password_str):
"""
判断字符中是否含有数字
"""
has_number = False
for c in password_str:
if c.isnumeric():
has_number = True
break
return has_number
def check_letter_exist(password_str):
"""
判断字符中是否含有字母
"""
has_letter = False
for c in password_str:
if c.isalpha():
has_letter = True
break
return has_letter
def main():
"""
主函数
"""
#1.read()
# content = f.read()
# print(content)
#2.readline()
# line = f.readline()
# print(line)
# line = f.readline()
# print(line)
#3.readlines()
lines = f.readlines()
print(lines)
f = open('tmp.txt', 'r')
for line in f.readlines():
print('read: {}'.format(line))
f.close()
if __name__ =='__main__':
main()
版本5.0
新增功能:定义一个password工具类
新式样知识点:面向对象
"""
作者:陈洁
功能:判断密码强度
版本:2.0
日期:09/10/2019
2.0新增功能:限制尝次数,循环的终止
3.0新增功能:保存密码及强度到文件中
4.0新增功能:读取文件中的密码
5.0新增功能:定义一个password工具类
"""
class PasswordTool:
"""
密码工具类
"""
def __init__(self, password):
#类的属性
self.password = password
self.strength_level = 0
def process_password(self):
# 规则一:密码强度大于8
if len(self.password) >= 8:
self.strength_level += 1
else:
print('密码强度要求至少8位!')
# 规则二:包含数字
if self.check_number_exist():
self.strength_level += 1
else:
print('密码要求包含数字!')
# 规则三:包含字母
if self.check_letter_exist():
self.strength_level += 1
else:
print('密码要求包含字母!')
#类的方法
def check_number_exist(self):
"""
判断字符中是否含有数字
"""
has_number = False
for c in self.password:
if c.isnumeric():
has_number = True
break
return has_number
def check_letter_exist(self):
"""
判断字符中是否含有字母
"""
has_letter = False
for c in self.password:
if c.isalpha():
has_letter = True
break
return has_letter
def main():
"""
主函数
"""
try_times = 5
while try_times >0:
password = input('请输入密码:')
#实例化密码工具对象
password_toll = PasswordTool(password)
password_toll.process_password()
f = open('password_5.0.txt', 'a')
f.write('密码:{},强度:{}\n '.format(password ,password_toll.strength_level))
f.close()
if password_toll.strength_level == 3:
print('恭喜!密码强度合格!')
break
else:
print('抱歉!密码强度不合格!')
try_times -= 1
print()
if try_times <= 0:
print('尝试次数过多,密码设置失败!')
if __name__ =='__main__':
main()
版本6.0
新增功能:定义一个文件工具类
"""
作者:陈洁
功能:判断密码强度
版本:2.0
日期:10/10/2019
2.0新增功能:限制尝次数,循环的终止
3.0新增功能:保存密码及强度到文件中
4.0新增功能:读取文件中的密码
5.0新增功能:定义一个password工具类
6.0新增功能:定义一个文件工具类
"""
class PasswordTool:
"""
密码工具类
"""
def __init__(self, password):
#类的属性
self.password = password
self.strength_level = 0
def process_password(self):
# 规则一:密码强度大于8
if len(self.password) >= 8:
self.strength_level += 1
else:
print('密码强度要求至少8位!')
# 规则二:包含数字
if self.check_number_exist():
self.strength_level += 1
else:
print('密码要求包含数字!')
# 规则三:包含字母
if self.check_letter_exist():
self.strength_level += 1
else:
print('密码要求包含字母!')
#类的方法
def check_number_exist(self):
"""
判断字符中是否含有数字
"""
has_number = False
for c in self.password:
if c.isnumeric():
has_number = True
break
return has_number
def check_letter_exist(self):
"""
判断字符中是否含有字母
"""
has_letter = False
for c in self.password:
if c.isalpha():
has_letter = True
break
return has_letter
class FileTool:
"""
文件工具类
"""
def __init__(self,filepath):
self.filepath = filepath
def write_to_file(self,line):
f = open(self.filepath,'a')
f.write(line)
f.close()
def read_from_file(self):
f = open(self.filepath, 'r')
lines = f.readlines()
f.close()
return lines
def main():
"""
主函数
"""
try_times = 5
file_path = 'password_6.0.txt'
# 实例化文件工具对象
file_tool = FileTool(file_path)
while try_times >0:
password = input('请输入密码:')
#实例化密码工具对象
password_toll = PasswordTool(password)
password_toll.process_password()
line = '密码:{},强度:{}\n '.format(password, password_toll.strength_level)
#写操作
file_tool.write_to_file(line)
#写文件
f = open('password_5.0.txt', 'a')
f.write('密码:{},强度:{}\n '.format(password ,password_toll.strength_level))
f.close()
if password_toll.strength_level == 3:
print('恭喜!密码强度合格!')
break
else:
print('抱歉!密码强度不合格!')
try_times -= 1
print()
if try_times <= 0:
print('尝试次数过多,密码设置失败!')
#读操作
lines = file_tool.read_from_file
print(lines)
if __name__ =='__main__':
main()
转载:https://blog.csdn.net/weixin_45454638/article/details/102389434