s.replace(old,new,[max])
s.strip(‘a’):从字符串前后剔除字符串’a’
s.lstrip(‘a’):从左边开始删除字符串’a‘
s.rstrip(‘a’):从右边开始删除字符串’a‘
s.index(‘k’,start,end):找不到会报错,建议前面加个异常处理结构
s.find(‘k’,start,end):找不到不会报错
s.upper():所有字符转换为大写字符
s.lower():所有字符转换为小写字符
s.capitalize():首字符的首字母大写
s.title():所有字符首字符大写
s.isalpha():判断字符是否为字母
s.isupper():判断字符是否为大写
s.islower():判断字符是否为小写
s.center(10,’*’):会填充字符
正则表达式:
import re:导入字符处理模块
re.match(pattern,s,[flag]):匹配
re.search(pattern,s,[flag]):查找
re.findall(pattern,s,[flag]):查找
pattern=re.compile(正则表达式)
flag取值:
re.I:匹配时忽略字符大小写
re.L:根据本地设置而更改\w\W\b\B\S\s的匹配内容
re.M:多行匹配
re.S:使’.'也匹配模式
re.U:匹配Unicode字符
re.X:忽略patterns中的空格,并使用#注释
列表仅用于表示一维和二维数据
l.index(‘k’,start,end):作用与上相同
l.append():类似于栈的入栈
l.pop():类似于栈的出栈
l.insert(i,value):在下标i出插入指定长,列表长度加一,i取值可以为[0,len(l)]
l.remove(’'k):删除’k’在列表中出现的第一次,列表长度减一
l[a:]:序列切片操作l[::-1]等价于reversed(l)
a=b:a,b指向同一对象,会互相影响
a=b[:]:a只是复制了b中所有的值,但是两者互不干扰
l.extend(l1):l会将l1中元素追加到自己的末尾,不改变其内存首地址,属于原地操作
d=dict()等价于d={}:字典初始化
dict.pop(d[a]):删除键值对,返回指定键值的值(不存在会报错,建议用异常处理结构检查)
dict.items():返回一个键值对组成的迭代对象,可以用list()强制转换
dict.keys():返回一个键值组成的迭代对象
dict.values():返回一个键值的值组成的迭代对象
dict.get(a,b):获取字典中指定键值a的值,不存在返回b(默认值,可以自己设置)
字典的键值必须为不可变数据类型:元组,字符串,常量(整型,复数,浮点型),且键值唯一。
字典排序:按键的值排序,逆序:
k=sorted(dict…items(),key=lambda x:x[1],reverse=True)
按键值排序,逆序
k=sorted(dict.items(),lambda x:x[0],reverse=True)
二维排序
m=sorted(nums,key=lambda x:(nums.count(x),-x))
nums:一个可遍历序列,排序先按元素出现次数排序,当次数相同时,按大小排序逆序排序
tuple(l):将可遍历序列l转换为元组
注意元组只有一个元素时必须为(a,):逗号不能省略
set()!={}:集合初始化要么用set(),要么至少包含一个元素{1}
集合与集合之间只有包含的关系,集合不属于线性结构
a={1},b={1,2}
a.add(3)操作之后a={1,3}
a.update(b)操作之后a={1,2,3}:会添加b中自身不存在的元素
a&b 求交集
a|b 求并集
forzenset():不可变集合
map(function,list):function必须为单参数函数,list必须是可遍历序列
x,y=map(int(),[‘1’,‘2’]):序列解包
list(map(lambda x:x+1,[1,2,]))输出[2,3],(注意map()函数返回的是一个可迭代对象,需要转换为所需序列类型)
filter(function,list):function必须为单参数函数,list必须为可遍历序列
list(filter(lambda x:x>5,[4,5,6]))输出[6]
reduce(function,list):function可以接收多个参数,list必须为可遍历序列
reduce(lambda x,y:x*y,[1,2,3])返回6
lambda:匿名函数,f=lambda x:x+=1 print(f(5))会输出6
判断结构
if
if-else
if-elif-else
循环结构(遍历循环,至少执行一次遍历):for i in l:其中l必须为可遍历序列
循环i结构(无限循环,可能出现死循环):while 条件
使用break语句可以跳出最近一层的循环;使用continue会跳出当前当此循环,会回到循环开始处继续执行。
异常处理结构(使用异常结构无法避免逻辑错误)
try:执行部分代码
except:捕捉异常(无异常继续往后执行)
else:如果不引发异常可以执行
finally:不论是否有异常都会执行(但在finally中仍可能引发异常,慎用)
异常通常是在程序运行过程中发生的异常事件,通常由外部问题导致;
错误是指导致系统不能按照用户意图进行工作的一切原因,致使程序无法正常进行;
基本逻辑控制类型:顺序、条件、循环
pytthon特点:通用性好,python语言可以用于几乎任何程序设计相关应用的开发;
语法简洁;生态高产;除此之外还有:跨平台,强制缩进(一般不需要缩进,顶行编写且不留空白;缩进用来表示后续代码与邻近无缩进代码的所属关系;缩进不会增加编程难度),支持中文;在最新的Linux系统中内置有python解释器。
python是一种被广泛使用的高级通用脚本编程语言,不是机器语言,而且是解释执行的,一条一条语句的执行。
高级语言根据计算机执行机制的不同可分为:静态语言和脚本语言;静态语言采用编译方式执行,脚本语言采用解释方式执行。
组合类型:集合,序列,映射(字典)
基本数据类型:整型,浮点型,复数
序列类型是一维元素向量,元素之间存在先后关系,通过下标(序号)访问(字符串、元组、列表)
序列解包:a,b,c=1,2,3等价于a,b,c=(1,2,3)等价于a,b,c=[1,2,3]
pip install/uninstall 库名:安装/卸载第三方库
pip download 包:下载一个包
python常用内置函数:
abs():求绝对值
sum():求和(参数必须是序列类型,且元素必须是可计算类型)
all():当参数中所有值为True时返回True
any():当参数中有一个值为True时返回True
format():格式化函数,格式标记包括:<填充><对齐><宽度><.><精度><类型>
填充常与对其一起使用:^居中对齐,>右对齐,<左对齐
eval():若参数为数据类型或者表达式,可以返回最终计算结果;若为字符串,必须包含两层引号,否则会报错(建议采取异常处理判断)
id():获取对象的内存地址,返回内存地址(一个正整数)
type():返回参数的数据类型
min():返回序列中的最小值(前提是序列中元素可以比较)
max():返回序列中的最大值(前提是序列中元素可以比较)
yield:把一个函数变成一个generater,带有yield的函数不再是一个普通函数,python解释器会将其视为一个可迭代对象。
int(‘12’,16)等价于18(将一个16进制表示的字符串转换为十进制数)
参数定义规则:
def 函数名(a,b=0,*c,**d):a为位置参数,b为默认参数,c可以传入一串数据(类似一个元组),d可以传入字典(e=0.f=1)
位置参数在前,默认参数,可变长度参数,全局变量在函数内部使用时,必须使用global关键字声明;
使用函数目的:降低编程难度,提高代码复用
缩进指每行语句开始前的空白区域,用来表示程序间的包含和层次关系
全局变量在函数内部使用时,需提前使用保留字global进行声明
局部变量指在函数内部定义的变量,仅在函数内部有定义,当函数退出时,变量将不再存在。在同一个作用域内,局部变量会隐藏全局变量。
函数中return可以多个值,会以元组形式返回;也可以不写,默认返回值为None。
函数默认值在函数定义时确定,如果默认值为列表、字典、集合等可变对象,并且在函数内部通过下标或对象自身的原地操作方法来使用形参,操作的结果会被保存,会影响后续调用。(解决办法,在函数开始加一个判断语句,判断该可变对象长度是否为None,不是就将其置为None)
type():返回参数数据类型,可以用来判断类型
type(l)==list等价于isinstance(l,list)
import random :导入随机数模块(伪随机)
random.randint(a,b):生成[a,b]之间的随机数
random.random():生成[0,1)之间的随机小数
random.sample(l.3):返回可遍历序列l中随机3个元素组成的列表
random.choice(l):从序列l中随机选择一个元素并返回
random.seed():设置随机数种子,保证每次随机生成数相等,默认值为当前系统时间,种子相同,产生的随机数也相等,方便程序复现
random.uniform(a,b):生成一个在[a,b]范围内的浮点数
random.shuffle(l):随机打乱l序列,并返回
random.getrandbits(k):随机生成一个k比特长度的随机整数
round(a,b):a保存b位小数,b默认为0
ord(‘A’)=65 chr(‘A’)=65
ord(‘a’)=97
join():字符串的连接:’-’.join(l):l必须为可遍历序列,而且元素必须为字符串(长度为一的字符也叫字符串)
逗号分隔的存储格式叫做csv格式,是一种通用的,相对简单的文件格式;其主要用于不同程序之间的数据交换;csv文件不需要特定的字符编码;csv文件的每一行是一维数据,整个csv文件是一个二维数据;一维数据和二维数据都可以使用csv格式保存成csv文件。
文件是存储在辅存器上的一组数据序列,可以包含任何数据内容;文件是数据的集合和抽象。当文件以文本方式打开时,读写按照字符串方式;当文件以二进制方式打开时,读写按照字符流方式。
python文件指定的默认编码是:utf-8
二进制文件直接由bit0和比特1组成,没有统一的编码
open(dir,operater)
dir为所需打开文件的位置(注意操作系统不同,目录规则不一)
operater为对此文件的打开方式(不设定时,默认为只读),有以下组合:
r:只读 r+:读写,rb:以二进制方式读取文件,这三种在文件不存在时,会报错
w:只写 w+:读写,wb:写二进制方式写,这三种在文件不能存在时会先创建文件
a:追加写,a+:可读,这两种在文件不存在时会自动创建文件
x:创建写模式,文件不存在就创建,存在则抛出异常(建议使用时放在异常捕获结构里面)
文件操作函数:
read([size]):size用来指定读取字符的大小,默认值为最大值
readline():读取一行数据
readlines():读取所有行数据,以列表形式返回
write():写入文件
writelines(l):将所有l中数据连接起来写到文件里
短路效应
a and b :当a为False时直接返回False;当a为True时直接返回b
a or b:当a为True时直接返回True;当a为False时直接返回b。
在python IDLE的交互模式中浏览上一条语句的快捷方式:ALT+P
软件工程:
程序设计的基本步骤:分析需求,设计算法,编写程序,测试,生成目标程序;
流程图是用来描述算法的常用工具;
saas:软件即服务
paas:将平台作为服务器的云计算服务类型:平台即服务
iaas:基础设施即服务
软件工具设计:PAD图,程序流程图,总总体结构图
数据流程图(DFD)是结构化分析中使用的工具,只反映系统必须完成的逻辑功能(功能模型);
逻辑模型分类:层次,网状,关系
程序流程图中带有箭头的线段表示控制流;
oop:允许作用于某个对象上的操作符称为方法,方法是类的动态属性;对象是属性和方法的封装体,可以从祖先中继承属性和方法,但并非所有对象都有继承性;
软件测试的目的:验证软件是否符合产品说明书的需求;发现软件存在的错误;
结构化程序设计的思想:自顶向下,逐步求精,模块化
黑盒测试的方法:等价类划分法、边界值分析法、错误推测法
软件过程:把输入转化为输出的一组彼此相关的资源和活动而不是软件开发和软件维护过程。
软件概要设计的基本内容:设计软件体系结构、数据结构以及数据库设计、结构概要设计文档、概要设计文档;
软件的三要素:程序、数据以及相关文档
大数据、物联网:
云计算问题:节能
云计算是对并行计算、网格计算、分布式计算的发展与应用
物联网方面,我国最紧缺的技术:集成电路技术
射频识别下与其他识别卡的最大区别:非接触性
制造技术不属于物联网问题;IP地址、终端问题、安全问题属于物联网问题
数据库:
数据库完整性中最基本要求:关系的主键中属性不能为空
数据库中的第一范式:对于关系模式,每个属性都不能再划分为简单项;
数据库的概念设计阶段:使用E-R模型
数据字典所定义的对象都包含于数据流图
数据库的结构被划分为用户级、概念级和存储级
第三范式:关系模式中无非主属性对主键的传递依赖和部分依赖
数据库中,数据模型包括数据结构、数据操作和数据约束
数据模型:数据特征的抽象
DDL:(数据定义语言)负责数据的模式定义与数据的物理存取构建
DML:(数据操作语言)负责数据的操作(增、删、改、查)
DCL:(数据控制语言)负责数据的完整性、安全性的定义与检查、并发控制、故障恢复;
数据库的三级模式中:概念模式与内模式只能有一个,外模式可以有多个
数据库中存储的是数据结构之间的联系
数据结构:
类属性被所有实例所共有
封装将数据和操作结合于一体
算法的优劣取决于算法复杂度
数据结构中的数据元素可以是另外一种数据结构;
算法执行的基本运算次数于问题规模有关