一.链式赋值_系列解包赋值_常量
1.链式赋值:x=y=a=123 (相当于a=123;y=123;z=123;)
同一个对象赋值给多个对象,即把同一个id给多个不同的变量;
2.系列解包赋值:a,b=2,3 (相当于a=2;b=3;)
注意:赋值个数与变量个数对应,必须保持一致;
使用系列解包赋值可实现变量交换:
>>> a,b=2,3
>>> a,b=b,a #相当于C语言中的t=a;a=b;b=t;
>>> print(a,b)#输出结果为3,2
3.常量
python不支持常量,没有语法规则限制改变常量值;只能约定程序在逻辑上不做改变,和常量的命名规则——全部大写;
>>> MAX=123
>>> print(MAX)
123
>>> MAX=345
>>> print(MAX)
345
>>> a,b=5,8
>>> a/b #浮点数除法(即有小数点)
0.625
>>> a//b #整数除法
0
>>> b//a
1
>>> divmod(b,a)#同时得到商和余数,b除以a
(1, 3) #前者是商,后者是余数
>>> divmod(a,b)
(0, 5)
>>> a*b #a乘以b
40
>>> a**b #a的b次幂
390625
>>> b%a #b取余a(b除以a的商)
3
>>> b %a
3
>>> 3/0 #除数为0显示异常
Traceback (most recent call last):
File "" , line 1, in <module>
ZeroDivisionError: division by zero
三.整数_不同进制_其他类型转换成整数
1.整数
python中除10进制还有其他进制:
二进制(0b/0B)
八进制(0o/0O)
十六进制(0x/0X);
这三种进制可以用位运算操作;
2.不同进制
>>> 12 #十进制
12
>>> 0b101#二进制
5
>>> 0B101#二进制
5
>>> 0x09#十六进制
9
>>> 0o10#八进制
8
>>> 0xff#十六进制
255
>>> 0o19#八进制中没有数字9,只有0——7,所以出错;
File "" , line 1
0o19
^
SyntaxError: invalid syntax
3.其他类型转换成整数
(1) 使用int()实现类型转换
>>> int(3.14)
3
>>> int(3.99999)#不是四舍五入,而是直接去掉小数;四舍五入用round()函数
3
>>> int(True)
1
>>> int(False)
0
>>> int("1212")#字符串转成整数只限数字字符串,字母不行,字母数字混合更也不行;
1212
>>> int("asa")#字母报错
Traceback (most recent call last):
File "" , line 1, in <module>
ValueError: invalid literal for int() with base 10: 'asa'
>>> int("1212asasa")#数字字母混合报错
Traceback (most recent call last):
File "" , line 1, in <module>
ValueError: invalid literal for int() with base 10: '1212asasa'
>>>
(2) 自动转型
(3) 整数可以有多大?
python3中整数可以无限大;
>>> google=10**100
>>> google
100000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000
>>> 314e-2#浮点数科学计数法表示,这些数字在内存中也是按照科学计数法存储;
3.14
>>> 3.14e2
314.0
>>> float(4)
4.0
>>> 2+4.0
6.0
>>> round(3.9)#注意round()函数不会改变原有值,而是产生新的值;
4
>>> a=2
>>> a+=1 #增强型赋值运算符+=,//=,/= 等等;
>>> a
3
>>> a+1 #a+=1相当与a=a+1
4
>>>
>>> a+ =1 #注意:+=中间不能加空格;
File "" , line 1
a+ =1
^
SyntaxError: invalid syntax
时间表示_unix时间点_毫秒和微秒_time模块
1.时间的表示
time.time()获得当前时刻(从1970年1月1日00:00:00开始),以秒为单位,带微妙精度的浮点值;
时间就是数字;
想得到任意时间,把时间当成数字处理即可;
>>> import time#使用time.time()函数时要引用time包;
>>> time.time() #秒
1591365239.9076984
>>> time.time()/60 #分钟
26522754.18163023
>>> time.time()/60/60 #小时
442045.90661757137
>>> time.time()/60/60/24 #天
18418.579714135416
>>> time.time()/60/60/24/365 #年
50.46186279044691
>>>
多点坐标_绘出折线图_计算两点距离
1.练习:定义多点坐标,绘出折线图,并计算起始点和终点距离
>>> import turtle
>>> import math #数学计算要引出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)
>>> distance=math.sqrt((x1-x4)**2+(y1-y4)**2)#计算起始点到终点距离,math.sqrt()开根号;
>>> turtle.write(distance)#标出数据
>>>
五.布尔值_比较运算符_逻辑运算符_短路问题
1.python2中没有布尔值,直接用0表示false,1表示true;
python3中把true和false定义成了关键字,但本质还是0和1,可以和数字相加;
>>> a=true#注意大小写
Traceback (most recent call last):
File "" , line 1, in <module>
NameError: name 'true' is not defined
>>> a=True
>>> b=3
>>> a+b
4
2.比较运算符
所有比较运算符返回1表示真,0表示假,分别与True和False等价
>>> a=True
>>> b=3
>>> a+b
4
>>> a==b
False
>>> a!=b
True
>>> a>b
False
>>> a<b
True
>>> a>=b
False
>>> a<=b
True
>>>
>>> a=10
>>> b=20
>>> a or 30
10
>>> b 0r 30
File "" , line 1
b 0r 30
^
SyntaxError: invalid syntax
>>> b or30
File "" , line 1
b or30
^
SyntaxError: invalid syntax
>>> b or 30 #b为true则不计算30,直接返回b
20
>>> a or 30/0
10
>>> 30/0 or a #30/0会出错,直接返回出错;
Traceback (most recent call last):
File "" , line 1, in <module>
ZeroDivisionError: division by zero
>>> a and b #a为true则返回b
20
>>> b and a
10
>>> a and 30/0 #a为true则返回后面的结果
Traceback (most recent call last):
File "" , line 1, in <module>
ZeroDivisionError: division by zero
>>> a and 0
0
>>> not a
False
>>> not a
False
>>> not b
False
>>>
六.同一运算符_整数缓存问题
1.同一运算符
is/is not 用于比较两个对象的存储单元,实际比较的是地址;
2.==
比较变量引用的对象的值是否相等。默认调用对象的_eq_()方法;
>>> a=1000
>>> b=1000
>>> a==b
True
>>> a is b
False
>>> id(a)
1815000639600
>>> id(b)
1815000639472
>>>
2.整数缓存问题
Python仅仅对比较小的整数对象进行缓存(范围为**[-5, 256]**)缓存起来,而并非是所有整数对象。需要注意的是,这仅仅是在命令行中执行,而在Pycharm或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围是[-5, 任意正整数])。
>>> a=23
>>> b=23
>>> a is b
True
注意:is比==效率高,在变量和None进行比较时,应该使用is
七.字符串_Unicode字符集_三种创建字符串方式_len()
1.字符串的编码:Unicode字符集
注意:一个中文汉字和一个英文字符都是1字节;
>>> ord('A')
65
>>> chr(88)
'X'
>>> a="I'm a student"
>>> a
"I'm a student"
>>> b='my name is "Tom"'
>>> b
'my name is "Tom"'
>>>
>>> resume='''name="wew"
...
... print(a)
... '''
>>> resume
'name="wew"\n\nprint(a)\n'
>>>
3.空字符串和len()函数
>>> c=""#允许空字符串存在,这里没有空格;
>>> len(c)
0
>>> d='asads'#len()函数用于计算字符串含有多少字符串;
>>> len(d)
5
八.字符串_转义字符_字符串拼接_字符串复制_input()获得键盘输入
1.转义字符 “\”
“\+特殊字符”
>>> a='I\' m a student'
>>> a
"I' m a student"
>>> a='sxt'+'qwe'
>>> a
'sxtqwe'
>>> a='sxt''qwqw'
>>> a
'sxtqwqw'
>>> a='qwe'+5
Traceback (most recent call last):
File "" , line 1, in <module>
TypeError: can only concatenate str (not "int") to str
>>> a='qwe'+'5'
>>> a
'qwe5'
>>> a='5''5'
>>> a
'55'
>>> a=5+5
>>> a
10
>>>
3.字符串复制
>>> a='swe'*3
>>> a
'swesweswe'
>>> print("sxt",end='')
sxt>>> print("sxt")
sxt
>>> print('sxt',end="##")
sxt##>>>
5.从控制台读取字符串
myname=input("name?")
name?QQ
>>> myname
'QQ'
九.字符串_str()_[]提取字符_replace()替换_内存分析
1.str()实现数字转型字符串
>>> str(3.14e2)
'314.0'
>>> str(230)
'230'
>>> str(True)
'True'
>>> a='qwyeqweywyqieyqwey'
>>> a
'qwyeqweywyqieyqwey'
>>> a[0]
'q'
>>> a[3]
'e'
>>> a[10]
'q'
>>> a[-1]
'y'
>>> a[-30]
Traceback (most recent call last):
File "" , line 1, in <module>
IndexError: string index out of range
>>> a[18-1]
'y'
>>> a[18]
Traceback (most recent call last):
File "" , line 1, in <module>
IndexError: string index out of range
>>> a[-18]
'q'
>>>
3.replace()实现字符串替换
字符串是“不可改变”的,我们通过[]可以获取字符串指定位置的字符,但是我们不能改变字符串。但是,我们确实有时候需要替换某些字符。这时,只能通过创建新的字符串来实现。
>>> a='abcdefgh'
>>> a
'abcdefgh'
>>> a=a.replace(a,'A')
>>> a
'A'
>>> a=a.replace('a','A')
>>> a
'A'
>>> a='abcedfg'
>>> a
'abcedfg'
>>> a=a.replace('a','A')
>>> a
'Abcedfg'
>>>
a = a.replace(‘a’, ‘A’)的整个过程中,实际上我们是创建了新的字符串对象,并指向了变量a,而不是修改了以前的字符串
十.字符串_切片slice()操作_逆序
1.字符串切片slice操作
切片slice操作可以让我们快速地提取子字符串。标准格式为:[起始偏移量start : 终止偏移量end : 步长step]
>>> a
'Abcedfg'
>>> a[2]
'c'
>>> a[1:5]
'bced'
>>> a[1:5:1]
'bced'
>>> a[1:5:2]
'be'
>>> A[::-1]
Traceback (most recent call last):
File "" , line 1, in <module>
NameError: name 'A' is not defined
>>> a[::-1]
'gfdecbA'
>>> a[:3]
'Abc'
>>> a[-3:]
'dfg'
>>> a[-4:-6]
''
>>>
```python
>>> 'to be or not to be'[::-1]
'eb ot ton ro eb ot'
>>> 'sxtsxtsxtsxtsxt'[::2]
'stxstxst'
>>> 'sxtsxtsxtsxt'[::3]
'ssss'
>>>
十一.字符串_split()分割_join()合并_join()效率测试
>>> a='to be or not to be'
>>> a.split()
['to', 'be', 'or', 'not', 'to', 'be']
>>> a.split('be')
['to ', ' or not to ', '']
>>> a=['sext','qwq','qwewe']
>>> '*'.join(a)
'sext*qwq*qwewe'
>>> ''.join(a)
'sextqwqqwewe'
>>>
注意:
十二.字符串_驻留机制_内存分析_字符串同一判断_值相等判断
1.字符串驻留机制和字符串比较
>>> a='qwq123'
>>> b='qwq123'
>>> a is b
True
>>> c='#qwqw'
>>> d='#qwqw'
>>> c is d
False
成员操作符
in / not in关键字,判断某个字符(子字符串)是否存在于字符串中。
十三.字符串_常用查找方法_去除首位信息_大小写转
换_排版
1.常用查找方法:
2.去除首尾信息
3.大小写转换
4.格式排版和其他方法
字符串_format格式化_数字格式化操作
1.字符串的格式化
2.填充与对齐
十四.数字格式化