一、链式赋值、系列解包赋值和常量
1.链式赋值
链式赋值用于同一个对象赋值给多个变量。
eg:
>>> a=b=789
>>> a
789
>>> b
789
2.系列解包赋值
系列数据赋值给对应相同个数的变量(个数必须保持一致)
eg:
>>> a,b,c = 1,2,3
>>> a,b,c = c,b,a
>>> print(a,b,c)
3 2 1
3.常量
Python不支持常量,即没有语法规则限制改变一个常量的值。约定常量的命名规则,以及在程序的逻辑上不对常量的值作出修改。
二、最基本内置数据类型介绍
1.内置数据类型
Python中最基本的内置数据类型:
(1)整型:整数,123,4,50
(2)浮点型:小数,3.14或者科学计数法314e-2
(3)布尔型:表示真假,仅包含:True、False
(4)字符串型:由字符组成的序列。“ert”,“ext”,“小饭团”
2.数字
注 :除数为0,会产生异常:
>>> 4/0
Traceback (most recent call last):
File "<pyshell#105>", line 1, in <module>
4/0
ZeroDivisionError: division by zero
(1)divmod()
使用divmod()函数同时得到商和余数:
eg:
>>> divmod(17,3)
(5, 2)
(2)整数
Python中,除10进制,还有其他三种进制:
二进制:0b或0B
八进制:0o或0O
十六进制:0x或0X
使用int()实现类型转换:
1.浮点数直接舍去小数部分。
2.布尔值True转为1,False转为0。
3.字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错。
自动转型:整数和浮点数混合运算时,表达式结果自动转型成浮点数。
(3)浮点数
浮点数称为float,可用float()将其他类型转化成浮点数。
注:
1.整数和浮点数混合运算时,表达式结果自动转型成浮点数。
2.round(value)可以返回四舍五入的值(但不会改变原有值,而是产生新的值)
(4)增强型赋值运算符
注意: "+="中间不能加空格。
(5)时间的表示
unix时间点:1970年1月1日00:00:00
当前时刻:time.time() (精确到微妙)
(6)操作例题
定义多点坐标-绘出折线段-计算两点间的距离
import turtle
import math
#定义多个点的坐标
x1,y1=200,200
x2,y2=150,0
x3,y3=-150,0
x4,y4=-100,200
#绘制折线
turtle.penup()
turtle.goto(x1,y1)
turtle.pendown()
turtle.goto(x2,y2)
turtle.goto(x3,y3)
turtle.goto(x4,y4)
#计算起始点和终点的距离
distance = math.sqrt((x1-x4)**2 + (y1-y4)**2)
turtle.write(distance)
结果:
(7)布尔值
把True和False定义成了关键字,本质是1和0,甚至可以和数字相加。
(8)比较运算符
所有的比较运算符返回1表示真,返回0表示假。分别与特殊的变量True和False等价。
以下假设变量a为15,变量b为30:
(9)逻辑运算符
(10)同一运算符
同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。
is 与 == 区别:
①is用于判断两个变量引用对象(id)是否为同一个。
② = =用于判断引用变量引用对象的值(value)是否相等。
③is运算符比= =效率高,在变量和None进行比较时,应该使用is。
(11)整数缓存问题
Python在命令执行程序中,对比较小的整数对象(范围为[-5,256]进行缓存。
在Pycharm或者保存文件执行,缓存范围为[-5,任意正整数]。
3.字符串
(1)字符串的编码
①Python支持Unicode,可以表示世界上任何书面语言的字符。
②使用内置函数ord()可以吧字符串转换成对应的Unicode码。
③使用内置函数chr()可以把十进制数字转换成对应的字符。
eg:
>>> ord('B')
66
>>> ord('三')
19977
>>> chr(88)
'X'
(2)引号创建字符串
①可以使用单引号或者双引号创建字符串
②使用两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转义字符。
③可以使用连续三个单引号或三个双引号创建多行字符串。
(3)空字符串和len()函数
①Python允许空字符串的存在,不包含任何字符且长度为0。
②len()用于计算字符串含有多少字符。
(4)转义字符
转义字符可以使用"+特殊字符
(5)字符串拼接
①可以使用+将多个字符串拼接起来。
补充:
1.如果+两边都是字符串,则拼接。
2.如果+两边都是数字,则加法运算
3.如果+两边类型不同,则抛出异常。
②可以将多个字面字符串直接放到一起实现拼接。
(6)字符串复制
可以使用*实现字符串复制。
(7)str()实现数字转型字符串
str()可以将其他数据类型转换为字符串。
(8)使用[]提取字符
①字符串的本质就是字符序列,可以通过在字符串后面添加[],在[]里面制定偏移量,可以提取该位置的单个字符。
②正向搜索:最左侧第一个字符,偏移量是0,第二个偏移量是1,以此类推,直到len(str)-1为止。
③反向搜索:最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到-len(str)为止。
注意:超出索引范围会报错。
(9)replace()实现字符串替换
字符串是不可变类型,有些时候需要替换某些字符串,只能通过创建新的字符串。
以上整个过程中实际上是创建了新的字符串对象,并指向了变量a,而不是修改了以前的字符串。
(10)字符串切片slice操作
切片操作标准格式为:[起始偏移量start:终止偏移量end:步长step]
典型操作(三个量为正数的情况):
其他操作(三个量为负数)的情况:
注意 :切片操作时,其实偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始偏移量小于0则会被当做0,终止偏移量大于"长度-1"会被当成-1。
(11)split()分割和join()合并
split()可以基于指定分隔符将字符串分割成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。
join()的作用和split()作用刚好相反,用于将一系列子字符串连接起来。
测试+=与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):
li.append("sxt")
a = "".join(li)
time04 = time.time() #终止时刻
print("运算时间:"+str(time04-time03))
(12)字符串驻留机制和字符串比较
字符串驻留:仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。
Python支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线(_)、字母和数字)会启用字符串驻留机制。
(13)字符串比较和同一性
①可以直接使用==,!=对字符串进行比较,是否含有相同的字符。
②使用is/not is,判断两个对象是否同一个对象,比较的是对象的地址,即id(obj1)是否和id(obj2)相等。
(14)成员操作符
in/not in关键字,判断某个字符(子字符串)是否存在于字符串中。
4.字符串常用方法汇总
(1)常用查找方法
(2)去除首尾信息
通过strip()去除字符串首尾指定信息,通过lstrip()去除字符串左边指定信息,rstrip()去除字符串右边指定信息。
>>> "*s*x*t*".strip("*")
's*x*t'
>>> "*s*x*t*".lstrip("*")
's*x*t*'
>>> "*s*x*t*".rstrip("*")
'*s*x*t'
>>> "*s*x*t*".strip()
'*s*x*t*'
(3)大小写转换
eg:
设定一个测试变量:
a=“gaoqi love programming,love SXT”
(4)格式排版
center()、ljust()、rjust()这三个函数用于对字符串实现排版。
(5)其他方法
①isalnum() 是否为字母或数字。
②isalpha() 是否只由字母组成(含汉字)。
③isdigit() 检测是否只由数字组成。
④isspace() 检测是否为空白符。
⑤isupper() 是否为大写字母。
⑥islower() 是否为小写字母。
(6)字符串format()格式化
可通过{索引}/{参数名},直接映射参数值,来实现字符串的格式化。同时有位置参数和关键字参数时,位置参数要在关键字参数之前。关键词参数要在format()里写出参数名。
eg:
(7)填充与对齐
(8)数字格式化
其他格式: