014
链式赋值
用于同一个对象赋值给多个变量
系列解包赋值
系列数据赋值给对应相同个数的变量(个数必须保持一致)
使用系列解包赋值实现变量交换
>>>a,b = 1,2
>a,b =b,a
常量
常量全部大写
python不支持常量,程序逻辑上不能改,实际上是可以改的
015
最基本内置数据类型
- 整型:整数
- 浮点型:小数
- 布尔型:true false
- 字符串型:“abc”
数字和基本运算符
运算符 | 说明 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 浮点数除法 |
// | 整数除法 |
% | 模(取余) |
** | 幂 |
divmod()同时获得商和余数
016
整数
二进制 0b/0B
八进制 0o/0O
十六进制 0x/0X
利用int()实现类型的转换
- 浮点数直接舍去小数部分
- 布尔值True转为1,False转为0
- 字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错
自动转型
整数和浮点型数值混合运算时,表达式结果自动转型成浮点型
整数可以有多大
python2中 int32位、long64位
python3中int可以存储任意大小的整数,long被取消
python3适合进行科学运算
googol
10的100次方
017
浮点数
float 用 a * b^10的形式的科学计数法表示
类型转换和四舍五入
- 例int(),可以用float()将起转换位浮点数
== 转化时是生成新的对象,而并非是在原有对象上进行更改== - 整数和浮点数混合运算时,结果会自动转换为浮点数
- 四舍五入
round(value)
增强型赋值运算符
运算符+、-、*、等和赋值符=结合可以构成“增强型赋值运算符”
+=中间不能加空格
018
时间的表示
时间用数字表示,从1970年1月1日00:00:00开始,以毫秒(1/1000秒)进行计算,该时间为== unix时间点==
time.time()
019
定义多点坐标-绘出折线-并计算起始点和终点距离
import turtle
#导入数学模块
import math
#定义多个点的坐标
x1,y1 = 50,50
x2,y2 = 50,-50
x3,y3 = -50,-50
x4,y4 = -50,50
#绘制折线
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)
turtle.done() #用来停止画笔绘制,但绘图窗体不关闭
020
布尔值
python2中无布尔值
python3中将True和False定义成了关键字,本质还是1和0,可以和数字相加
比较运算符
逻辑运算符
与and、或or、非not
同一运算符
is/is not 比较的是对象的地址
== 比较的是对象的值(value),默认调用对象的_eq_()方法
整数缓存
python缓存范围[-5,任意正整数]
小整数放入缓存可重复使用。
is运算符比 == 效率高,在变量和None进行比较时,应该使用is
022
字符串
字符串基本特点
本质:字符序列
不可变
python不支持单字符类型,单字符也是作为一个字符串使用
字符串编码
python3使用Unicode字符集(16位),ASC II(8位)是Unicode编码的子集
内置函数ord()
把字符转换位对应的Unicode码
内置函数chr()
把十进制数字转化为对应的字符
引号创建字符串
单双引号均可
连续三个单引号或三个双引号,可以帮助我们创建多行字符串。
空字符串和len()函数
python允许空字符串的存在,不包含任何字符且长度为0
例如:
>>> c=''
>>> len(c)
0
023
转义字符
字符串拼接
使用将多个字符串拼接起来
可以使用 + 将多个字符串拼接起来
- 如果加号两边都是 字符串,则拼接
- 如果加号两边都输数字,则进行加法运算
- 如果加号两边类型不同,则抛出异常
可以将多个字符串直接放在一起实现拼接。
字符串复制
运用*
>>> a = 'stro'*4
>>> a
'strostrostrostro'
不换行打印
每次调用print()时,都会自动打印一个换行符。
当不想换行时,即不想自动打印一个换行符时,通过加入参数end = "任意字符串"
实现末尾添加任何内容。
从控制台读取字符串
使用input()
从控制台读取键盘输入的内容
>>> myname = input('请输入名字:')
请输入名字:嘻嘻哈哈
>>> myname
'嘻嘻哈哈'
024
str()实现数字转型字符串
str()将其他数据类型转成字符串
当我们调用print()函数时,解释器自动调用了str()将非字符串的对象转成了字符串
使用[]提取字符
字符串本质时字符序列
在[]里面加入制定偏移量,可以提取该位置的单个字符
- 正向搜索
最左侧第一个字符,偏移量是0,第二个字符偏移量为1,以此类推。直到len(str)-1为止 - 反向搜索
最右侧第一个字符偏移量为-1,倒数第二个偏移量为-2,以此类推,直到-len(str)为止。
replace()替换
字符串不能改变,但是可以通过replace()修改字符串中的某一个字符后 创建出一个新的字符串
a = a.replace('原字符','要更改的字符')
>>> a = 'asdfghj'
>>> a
'asdfghj'
>>> a = a.replace('f','哦')
>>> a
'asd哦ghj'
025
字符串切片slice操作
[起始偏移量start:终止偏移量end:步长step]
== 包头不包尾==
step默认为1
026
split()分割和join()合并
spilt()基于制定分隔符将字符床分隔成多个字符串== (存储到列表里)==。
如果不指定分隔符,则默认使用空白符(换行符、空白、制表符)
>>> a = "i want to go to sleep"
>>> a.split()
['i', 'want', 'to', 'go', 'to', 'sleep']
>>> a.split('want')
['i ', ' to go to sleep']
join()与split()正好相反,将列表中的字符串合并
'链接符'.join(变量)
>>> a
['i want ', ' go ', ' sleep']
>>> '*'.join(a)
'i want * go * sleep'
拼接字符串要点:
使用字符串拼接符‘+’,会生成新的字符串对象
使用join时,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))
027
字符串的驻留机制
仅保留一份相同且不可变字符串的方法,不同的值被存放在字符串滞留池中。
对于符合标识符规则的字符串会启用字符串驻留机制仅包含下划线、字母和数字
>>> a = "abd_33"
>>> b = "abd_33"
>>> a is b
True
>>> a = "abd#"
>>> b = "abd#"
>>> a is b
False
成员操作符
in/not in判断某个字符(子字符串)是否存在于字符串中
>>> 'a' in a
True
>>> 'sf' in a
False
028
常用查找方法
len() 字符串长度
a.startswith(‘’) 以指定字符串开头
a.endswith(‘’) 以指定字符串结尾
a.find(‘’) 第一次出现指定字符串的位置
a.rfind(‘’) 最后一次出现指定字符串的位置
a.count(’’) 指定字符串出现了几次
a.isalnum() 所有字符全是字母或数字
去除首尾信息
strip() 去除首位空格
strip("") 去除首位指定信息
lstrip("") 去除左边指定信息
rstrip("") 去除右边指定信息
"字符串".strip()
大小写转换
a.capitalize() 首字母大写
a.title() 每个单词首字母大写
a.upper() 全部大写
a.lower() 全部小写
a.swapcase() 大转小,小转大
全部为产生新的字符串
格式排版
center() 居中
ljust() 左对齐
rjust() 右对齐
>>> a = 'asdf'
>>> a.center(20)
' asdf '
>>> a.ljust(15,'&')
'asdf&&&&&&&&&&&'
其他方法
isalnum() 是否是字母或数字
isalpha() 是否是字母
isdigit() 是否时数字
isspace() 是否为空白符
isupper() 是否为大写
islower() 是否为小写
029
字符串的格式化
格式化字符串函数str.format()
基本语法用{}和:
>>> a ='名字是:{0},年龄是{1}'
>>> a.format('haha',18)
'名字是:haha,年龄是18'
填充与对齐
填充常与对齐一起使用^ 、<、 > 分别是居中,左对齐、右对齐,后面带宽度
:后面带填充的字符,只能是一个字符,不指定的话默认用空格填充
>>> '{:%<10}'.format('asfsdjh')
'asfsdjh%%%'
数字格式化
浮点数通过f,整数通过d进行需要的格式化
{:.2f} 保留两位小数
{:+.2f} 带符号保留两位小数
{:.0f} 不带小数
{:0>2d} 数字补零填充左边,宽度为2
{:x<4d} 数字补x填充右边,宽度为4
{:,} 以逗号分隔的数字形式
{:.2%} 百分比格式
{:.2e} 指数记法
{:10d} 右对齐(默认、宽度为10)
{:<10d} 左对齐,宽度为10
{:^10d} 居中,宽度为10