python第二天
1.链式赋值:把同一个对象赋值给多个变量
a=b=3 == a=3;b=3
2.系列解包赋值:系列数据赋值给对应相同个数的变量
a,b = 4,5 == a=4;b=5
可以用于变量赋值的交换
3.常量
python不支持常量,只可以通过逻辑不对常量进行编辑
4.基本的内置数据类型
整型(1,2,3);浮点型(1.22 2.3);布尔型(True,False);字符串(“abc”,"123")
5.基本运算符
加2+3=5
减3-1=2
乘2*5=10
浮点除6/2=3.0
整数除7//2=3
模(取余)6%4=2
幂2**3=8
使用divmod()函数可以同时得到商和余数
>>>divmod()
(4,1)
6. Python中包括二进制0B或0b,八进制0O或0o,十进制,十六进制0X或0x
7.使用int()函数实现类型转换
>>>int(9.9)
9
>>>int(True)
1
>>>int(False)
0
>>>int("345")
345
8.自动转型 整数和浮点数运算时。整数自动变为浮点数
9.round(value)可以返回四舍五入的值,但不会改变原有值
10.时间的表示:可以通过time.time()获得当前时刻,返回的值以秒为单位,带微秒(1/1000毫秒)精度的浮点数 1970年1月1日00:00:00开始计时
11 定义多点坐标,给出折线,并计算起始点和终点距离
程序如下:
import turtle
#定义多个点的坐标
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)
#计算起始点和终点的距离
import math
distance = math.sqrt((x1-x4)**2 + (y1-y4)**2)
turtle.write(distance)
运行结果如下:
12 比较运算符
== 比较对象的值是否相等
!= 比较两个对象的值是否不相等
> 返回x是否大于y
< 返回x是否小于y
> =返回x是否大于等于y
< =返回x是否小于等于y
13 逻辑运算符
与and 或or 非not
14 同一运算符
同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址
is 判断两个标识符是不是引用同一个对象
is not 判断两个标识符是不是引用不同对象
(python会对在【-5,256】之间的整数进行缓存,即这些比较小的数字对象会进行缓存)
(is 比==效率高)
15 字符串
字符串的本质是:字符序列,python的字符串是不可变的。无法对原字符串做任何修改,但是可以达到“看起来修改”的效果
python不支持单字符类型,单字符也是作为一个字符串使用的,长度为一
支持Unicode,可以表示世界上任何书面语言的字符
内置ord()函数可以将字符转换为相应的Unicode码
>>>ord('A')
65
内置chr()函数可以将十进制数字转换为对应的字符
>>>(66)
B
可以通过单引号或双引号来创建字符串
连续三个单引号或双引号,可以创建多行字符串
允许空字符串存在,不包含任何字符,长度为0 【len()用于计算字符串包含有多少字符】
转义字符 \+特殊字符
\在行尾时 续行符
\\ 反斜杠符号
\‘ 单引号
\“ 双引号
\b 退格
\n 换行
\t 横向制表符
\r 回车
字符串拼接 : 'aa'+'bb'==>'aabb' 'aa' 'bb'==>'aabb'
字符串复制:使用*可以实现字符串的复制
>>>a='zx'*3
>>>a
'zxzxzx'
不换行打印:通过参数end = “任意字符串”,实现末尾添加任何内容
从控制台读取字符串 使用input()从控制台读取键盘输入的内容
str()实现把其他数据类型转型字符串
str(5.20)==>'5.20'
str(3.14e2)==>'314.0'
str(True)==>’True‘
使用[]提取字符
a='asd3fv'
a[0]==>'a'
a[-1]==>'v'
replace()实现字符串替换
>>>a='asd3fv'
>>>
'asd3fv'
>>>a.replace('v','s')
'asd3fs'
>>>a
'asd3fv'
>>>a=a.replace('v','s')
'asd3fs'
>>>a
'asd3fs'
字符串切片slice操作
起始偏移量start:终止偏移量end:步长step
>>>a='asd3fv'
>>>a[1:5] #包头不包尾,默认步长为1
'sd3f'
>>>a='asd3fv'
>>>a[1:5:2] #步长为2,即隔一个取一个
's3'
>>>a='asd3fv'
>>>a[-2:] #倒数两个
'fv'
>>>a='asd3fv'
>>>a[::-1] #步长为负,从右向左反向提取
'vf3dsa'
split()分割和join()合并
split()将字符串分割成多个子字符串,默认使用空白字符(换行符、空格、制表符)
>>>a='to be or not to be'
>>>a.split()
['to' ,'be','or','not','to','be']
>>>a.split('be')
['to' ,'or not to','']
join()用于将一系列子字符串连接起来
>>>a=['to' ,'be','or']
>>>'*'.join(a)
'to*be*or'
>>>''.join(a)
'tobeor'
操作:测试拼接符+和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))
运算结果如图:
字符串驻留 仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。(符合表示符规则的字符串【仅包含下划线、字母和数字】)
成员操作符: in / not in:判断某个字符(子字符串)是否存在于字符串中
字符串常用方法:
常用查找方法:
a='to be or not to be'
len(a) 字符串的长度
a.startswith("to") ==> True 以指定字符串开头
a.endswith("be") ==> True 以指定字符串结尾
a.find("o") ==> 1 第一次出现指定字符串的位置
a.rfind("b") ==>-2 最后一次出现指定字符串的位置
a.count("to") ==>2 指定字符串出现了几次
a.isalnum() 所有字符是否全是字母或数字
去掉首尾信息:
使用strip()去除字符串首尾指定信息,Istrip()去除字符串左边指定信息,rstrip()去除字符串右边指定信息
大小写转换
a.capitalize() 产生新的字符串,第一个单词首字母大写
a.title() 产生新的字符串,每个单词都首字母大写
a.upper() 产生新的字符串,所有字符全转换为大写
a.lower() 产生新的字符串,所有字符全转换为小写
a.swapcase() 产生新的字符串,所有字符都进行大小写转换
格式排版
center() 居中 ljust()左对齐 rjust()右对齐
其他方法
isalpha() 是否只由字母组成(含汉字)
isdight() 是否只由数字组成
isspace() 是否为空白符
isupper() 是否为大写字母
islower() 是否为小写字母
字符串格式化
函数str.format()
>>>a="名字是:{0},年龄是:{1}"
>>>a.format("哈哈",3)
"名字是:哈哈,年龄是:3"
填充与对齐
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认用空格填充
数字格式化
浮点数通过f,整数通过d进行需要的格式化