目录
一.赋值(接上节课内容)
1.上节课内容
1.变量名 = 表达式,在运行过程中,先对表达式进行解析获取其地址再将该地址给变量
注意:如果变量不赋值(不初始化)直接使用则会报错
2.当对象不被变量进行引用时,可以使用del将其删除,该对象会被垃圾站回收,清空内存。
2.本节课内容
- 链式赋值:此处记住此种格式即可a=b=??
2.系列解包赋:值要注意对应和前后数字个数一致的问题
二.运算符
1.数字和基本运算符
Python 支持整数(如:50,520)和浮点数(如:3.14,10.0, 1.23e2),我们可以对数字做如下 运算。
使用 divmod()函数同时得到商和余数,divmod()是一个函数,我们以后会详细介绍。他返回的是一个元组(后续将会学习)。
2.增强型赋值运算符
运算符+、-、*,/、//、**和%和赋值符=结合可以构成“增强型赋值运算符”。 a = a + 1 等价于: a +=1
注:“+=”中间不能加空格!
3.时间的表示
计算机中时间的表示是从“1970 年 1 月 1 日 00:00:00”开始,以毫秒(1/1000 秒) 进行计算。我们也把 1970 年这个时刻成为“unix 时间点”。
4.比较运算符
5.逻辑运算符
6.同一运算符
三.数据类型:常量、整型、浮点型、布尔型、字符串
1. 常量
python中不设定常量不可变的概念,我们只能从逻辑上限制常量不可变
2.整数
(1)注意:此处需要会进行十进制、二进制、八进制、十六进制的转换(愚蠢的我十六进制abcdef少算一个e,愚蠢!)
(2)使用int实现类型转换,此处要注意代码的格式
eg:(A). 浮点数直接舍去小数部分。如:int(9.9)结果是:9
(B). 布尔值 True 转为 1,False 转为 0。 如:int(True)结果是 1。注意:True/False一定要首字母大写,否则会出错
(C). 字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错。
(3)浮点型+整型=自动转换成浮点型
(4)Python3 中可以做超大数的计算,而不会造成“整数溢出”,这也是 Python 特别适 合科学运算的特点。
(5)整数缓存问题
此问题分成两种情况,A.首先python会在命令行中对比较小的整数对象进行缓存(范围为[-5, 256]);B.在保存文件中执行时解析器会对其进行优化对范围是[-5,任意正整数]的整数进行缓存。
注:1.is比较对象地址是否相同(判断对象本质上是否相同)
2.==比较对象的值是否相同
3.浮点数(一般使用科学计数法在内存中存储)
类型转换和四舍五入
(1). 类似于 int(),我们也可以使用 float()将其他类型转化成浮点数。
(2). 整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0 的结果是 10.0
(3). round(value)可以返回四舍五入的值 注:但不会改变原有值,而是产生新的值
4.布尔值
python2中将True和False直接定义为1和0,python3使用True和False表示,但是本质上还是1和0。
5.字符串
(1)字符串的特点
(A)字符串本身不可以进行修改
(B)python中不设定单个字符,一个字符也算字符串
(2)字符串的编码
Python中使用Unicode进行编码使用ord()可以将字符转换成unicode码,使用chr()可以将数字转换成unicode码
(3)字符串的创建
通过引号创建字符串:(A)通过''创建字符串。(B)通过""船舰字符串。 (C)通过'''创建整段的字符串
(4)字符串的相关应用和函数
- 空字符串和len()函数
Python 允许空字符串的存在,不包含任何字符且长度为 0。len()函数会测量字符串包含多少个字节。
- 转义字符
一般常用\n换行和\连接字符
- 字符串拼接
有两种方法:
(1)使用“+”
(A) 如果+两边都是字符串,则拼接。 (B) 如果+两边都是数字,则加法运算。 (C) 如果+两边类型不同,则抛出异常。
(2)使用join函数
- 字符串复制
使用*可以实现字符串复制。
- 不换行打印
可以自己通过参数 end = “任意字符串”。实现末尾添加任何内容
此处要注意代码的格式。eg:print("abc",end="dad")[愚蠢的我又出错了,注意逗号和等号都要写好!]
- 从控制台读取字符串
使用 input()从控制台读取键盘输入的内容。
- str()实现数字转型字符串
str()可以帮助我们将其他数据类型转换为字符串。当我们调用 print()函数时,解释器自动调用了 str()将非字符串的对象转成了字符串。我们 在面向对象章节中详细讲解这部分内容。
- 使用[ ]提取字符
字符串的本质就是字符序列,我们可以通过在字符串后面添加[],在[]里面指定偏移量, 可以提取该位置的单个字符。
(1)正向搜索:最左侧第一个字符,偏移量是 0,第二个偏移量是 1,以此类推。直到 len(str)-1 为止。
(2)反向搜索:最右侧第一个字符,偏移量是-1,倒数第二个是-2,一次类推指导-len(str)为止。
如果超出字符串的长度则会自动报错
- replace()实现字符串替换
字符串不能进行改变,但是可以用[[]来获取某位数字,并使用replace()函数来选择替代其中字符。
注意:要使用字符串对该函数方法进行调用str.replace("","")。愚蠢的我在此处又出错了!
整个过程中,实际上我们是创建了新的字符串对象,并指向了变量 a,而不是修改了以前的 字符串。
- 字符串切片 slice 操作
切片 slice 操作可以让我们快速的提取子字符串。标准格式为: [起始偏移量 start:终止偏移量 end:步长 step]
切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始 偏移量小于 0 则会当做 0,终止偏移量大于“长度-1”会被当成-1。
注意:此处虽然是使用slice方法但是并没有调用slice方法,直接通过str[ : : ]即可实现。愚蠢的我又出错了
- split()分割和 join()合并
(1)split()可以以特定的字符将字符串分开
注:此处的split()为函数,一定要记得引用和写括号。愚蠢的我又错了!
(2)join()函数
join函数用于将一系列字符连接成一个字符串,此处是使用连接字符调用join()函数,join函数的参数为需要连接的字符串
注意:此处调用函数的格式比较新颖,且连接字符也是字符,需要使用引号。愚蠢的我在这里出错了!
join()函数和“+”均可以将字符串进行连接,但是+的效率较低,需要重建对象,join()函数效率较高,一般使用join函数。
eg:用time函数测试+拼接符和 join()不同的效率
import time
time01=time.time()
a=""
for i in range(1000000):
a+="sxt"
time02=time.time()
print("运行时间:"+str(time02-time01))
time03=time.time()
li=[]#注意此处的元组需要等号进行定义
for i in range(1000000):
a="".join(li)
time04=time.time()
print("运行时间:"+str(time04-time03))
- 字符串驻留机制和字符串比较
仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。 Python 支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线(_)、字母 和数字)会启用字符串驻留机制驻留机制。
注:此处有空格也算不符合标识符规则
- 常用查找方法总结
(1)成员操作符:in /not in 关键字,判断某个字符(子字符串)是否存在于字符串中
(2)常用查找方法
len()
a.startswith('')
a.endswith('')
a.rfind('')
a.count("")
a.isalnum() #全部都是数字或字母
注:starts和ends。此处出错。
(3)去除首尾信息
我们可以通过 strip()去除字符串首尾指定信息。通过 lstrip()去除字符串左边指定信息, rstrip()去除字符串右边指定信息。
注:此处要注意中英文格式不同的问题
(4)大小写转换
a.capitalize()
a.title()
a.upper()
a.lower()
a.swapcase()
(5)格式排版
center(,)、ljust(,)、rjust(,)这三个函数用于对字符串实现排版。
(6)其他方法
1. isalnum() 是否为字母或数字
2. isalpha() 检测字符串是否只由字母组成(含汉字)。
3. isdigit() 检测字符串是否只由数字组成。
4. isspace() 检测是否为空白符
5. isupper() 是否为大写字母
6. islower() 是否为小写字母
- 字符串的格式化
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。 基本语法是通过 {} 和 : 来代替以前的 % 。 format 函数可以接受不限个参数,位置可以不按顺序
注意:此处{ }内的数字必须从0开始,否则会报错。
- 填充与对齐
填充常跟对齐一起使用 ^、分别是居中、左对齐、右对齐,后面带宽度 :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
注:这个总是记不住{:填充数字><^(左右对齐),位数}
- 数字格式化
- 可变字符串
原地修改字符串,不需要更改字符串地址。可以使用 io.StringIO ()对象或 array 模块。
注意:io.StringIO()最后的io需要大写
A.seek()可以将指针指向指定的位数