Python赋值方法
-
链式赋值
用于同一个对象赋值给多个变量x=y=123
-
系列解包赋值
系列数据赋值给对应相同个数的变量(个数保持一致)a,b,c=4,5,6
系列解包赋值实现变量互换
a,b=1,2 a,b=b,a print(a,b)
-
常变量
python不支持常变量,通过逻辑上不对常变量的值进行修改。命名全大写
Python最基本内置数据类型介绍(type)
- 整数
- 浮点型 小数
- 布尔型 True、False
- 字符串型
数字类型运算
- /浮点数除法
- //整数除法
- %模(取余)
- **幂
除数为0,会报错
divmod(a,b)得到商和余数
其他类型转化成整数类型
常用其他进制
-0b 或 0B,二进制 0 1
-0o 或 0O,八进制0 1 2 3 4 5 6 7
-0x 或 0X, 十六进制0-9 a b c d e f
这三种进制可以非常方便的进行“位运算”操作。
【操作】测试不同进制
0b101
0o10
0xff
使用int()实现类型转换:
-
浮点数舍去小数部分
-
布尔值Ture转为1 False转为0
-
字符串(整数可以转化,其他不行)
自动转型:整数和浮点数混合运算,结果自动转型浮点数
整数可以多大?
googol=10**100
googol是google最初的名字,也是它的起源
Python3 int可以存储任意大小的整数,适合科学运算的特点
浮点数
浮点数,称为float
浮点数用科学计数法来表示,比如3.14表示成:314e-2
类型转化和四舍五入
-
类似于int(),float()
-
round(value)可以返回四舍五入的值 注:但不会改变原有值,产生新的值
增强型赋值运算符
运算符+、-、*、/、//、**和%和赋值符=结合可以构成“增强型赋值运算符”
a=a+1等价于a+=1
时间的表示
计算机时间的表示是从“1970年1月1日 00:00:00”开始,以毫秒(1/1000秒)进行计算。我们把1970年这个时刻成为“unix时间点”。
python中可以通过time.time()获得当前时刻,返回值以秒为单位,带微秒精度的浮点值。
import time
time.time()
##【操作】定义多点坐标_绘出折线_并计算起始点和终点距离
import turtle
import math
x1,y1=100,100
x2,y2=100,-100
x3,y3=-100,-100
x4,y4=-100,100
turtle.penup()
turtle.goto(x1,y1)
turtle.pendown()
turtle.goto(x2,y2)
turtle.goto(x3,y3)
turtle.goto(x4,y4)
dis=math.sqrt((x1-x4)**2+(y1-y4)**2)
turtle.write(dis)
布尔值
True和False本质还是1和0,甚至可以和数字相加。
比较运算符
所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。
== 等于 比较对象的值是否相等
!=不等于 比较对象的值是否不相等
逻辑运算符
- or 或
- and 与
- not 非
同一运算符
同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。
-
is 判断两个标识符是不是引用同一个对象
-
is not 判断两个标识符是不是引用不同对象
is与 == 区别:
-
is用于判断两个变量引用对象是否为同一个,既比较对象的地址
-
== 用于判断引用变量引用对象的值是否相等,默认调用对象的_eq_()方法
整数缓存问题
-
python仅对比较小的整数对象进行缓存,命令行中范围【-5,256】
-
Pycharm或保存为文件时,范围【-5,任何正整数】
-
is运算符比==效率高,在变量和None进行比较时,应该使用is
字符串
字符串基本特点
本质:字符序列。Python的字符串不可变,但可以将字符串的一部分复制到新创建的字符串,达到“看起来修改”的效果。
Python不支持单字符,单字符也是作为一个字符串使用。
字符串的编码
Python3直接支持Unicode,国际通用,默认16位Unicode。ASCII码八位,仅表示数字和英文。
- 使用内置函数ord(),字符转Unicode
- 使用内置函数chr(),十进制转字符
引号创建字符串
-
单引号或双引号创建
-
连续三个单引号或三个双引号,创建多行字符串
空字符串和len()函数
Python允许空字符串,字符长度为0
转义字符
转义字符 | 描述 |
---|---|
\(在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\’ | 单引导 |
\’’ | 双引导 |
\b | 退格(Backspace) |
\n | 换行 |
\t | 横向制表符 |
\r | 回车 |
字符串拼接
- 用+拼接
- 多个字符串直接放到一起
字符串复制
用*实现字符串复制
不换行打印
-
前面调用print时,会自动打印一个换行符。
-
有时不想换行时,可以通过end="任意字符串"实现末尾添加任何内容。
print("sxt",end=' ') print("sxt",end='\t')
从控制台读取字符串
input()
str()实现数字转型字符串
使用[]提取字符
-
正向搜索:最左侧第一个字符,偏移量(索引)是0,第二个偏移量1,以此类推,直到len(str)-1为止。
-
反向搜索:最右侧第一个字符,偏移量(索引)是-1,倒数第二个偏移量-2,以此类推,直到-len(str)为止。
a='abcd' print(a[0]) print(a[-1])
replace()实现字符串替换
字符串不可变,创新了新字符串
a=a.replace("c","高")
字符串切片slice操作
- 标准格式为:[起始偏移量start: 终止偏移量end: 步长step] 包头不包尾
- [::-1] 逆序排列
split()分割和join()合并
-
split()可以基于指定分隔符将字符串分割成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符串(换行符/空格/制表符)。
-
join()用于将一系列子字符串连接起来。
+会生成新的字符串对象。推荐使用join函数,因为join在拼接字符串之前会计算所有字符串的长度,逐一拷贝仅新建一次对象 -
测试join和+效率
import time time01=time.time() #起始时刻 a='' for i in range(1000000): a +='sct' 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))
字符串驻留机制和字符串比较
- 字符串驻留:仅保存一份相同且不可变字符串的方法,不同值被存放在字符串驻留池中。(仅包含下划线、字母和数字会启用字符串驻留机制)
字符串比较和同一性
-
可以用==,!=进行字符串比较
-
使用is/ not is,判断两个对象是否同一个对象,比较的是对象的地址
成员操作符
in /not in 关键字,判断某个字符是否存在字符串中
字符串常用方法汇总
常用查找方法
-
len(a) 计算字符串长度
-
a.startswith(‘字符串’) 是不是以指定字符串开头
-
a.endswith(‘字符串’) 是不是以指定字符串结尾
-
a.find(‘字符串’) 第一次出现指定字符串的位置
-
a.rfind(‘字符串’) 最后一次出现指定字符串的位置
-
a.count(‘字符串’) 指定字符串出现了几次
-
a.isalnum() 判断所有字符串全是字母或数字
-
a.isalpha() 判断所有字符串全是字母(含汉字)
去除首尾信息
-
strip() 去除首尾指定信息
-
lstrip() 去除首指定信息
-
rstrip() 去除尾指定信息
大小写转换
-
a.capitalize() 产生新的字符串,首字母大写
-
a.title() 产生新的字符串,每个单词都首字母大写
-
a.upper() 产生新的字符串,所有字符全转成大写
-
a.lower() 产生新的字符串,所有字符全转成小写
-
a.swapcase() 产生新的字符串,所有字母大小写转换
格式排版
-
a.center(10,’*’) 居中
-
a.ljust(10,’*’) 左对齐
-
a.rjust(10,’*’) 右对齐
字符串的格式化
format()基本用法
基本语法通过{}和:来代替以前的%
b="名字是:{0},年龄是{1},{0}是个好小伙"
print(b.format('小王',18))
填充与对齐
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认用空格填充
print('我是{0},我喜欢数字{1:*^8}'.format('小李','666'))
数字格式化
浮点数通过f,整数通过d进行需要的格式化