Python基础——day02

一.链式赋值_系列解包赋值_常量
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

二.内置数据类型_基本算术运算符
Python基础——day02_第1张图片
Python基础——day02_第2张图片
Python基础——day02_第3张图片

>>> 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()实现类型转换

Python基础——day02_第4张图片

>>> 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中整数可以无限大;
Python基础——day02_第5张图片

>>> google=10**100
>>> google
100000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000

四.浮点数_自动转换_强制转换_增强赋值运算符
Python基础——day02_第6张图片

>>> 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)#标出数据
>>>

Python基础——day02_第7张图片
五.布尔值_比较运算符_逻辑运算符_短路问题
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
>>>

3.逻辑运算符
Python基础——day02_第8张图片

>>> 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字符集
Python基础——day02_第9张图片
注意:一个中文汉字和一个英文字符都是1字节;

>>> ord('A')
65
>>> chr(88)
'X'

2.引号创建字符串
Python基础——day02_第10张图片

>>> 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"

2.字符串拼接
Python基础——day02_第11张图片

>>> 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'

4.不换行打印
Python基础——day02_第12张图片

>>> 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'

2.使用[]提取字符
Python基础——day02_第13张图片

>>> 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]
Python基础——day02_第14张图片

>>> 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()效率测试
Python基础——day02_第15张图片

>>> 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.字符串驻留机制和字符串比较
Python基础——day02_第16张图片

>>> a='qwq123'
>>> b='qwq123'
>>> a is b
True
>>> c='#qwqw'
>>> d='#qwqw'
>>> c is d
False

成员操作符
in / not in关键字,判断某个字符(子字符串)是否存在于字符串中。
十三.字符串_常用查找方法_去除首位信息_大小写转
换_排版

1.常用查找方法:
Python基础——day02_第17张图片
2.去除首尾信息
Python基础——day02_第18张图片
3.大小写转换
Python基础——day02_第19张图片
4.格式排版和其他方法
Python基础——day02_第20张图片
字符串_format格式化_数字格式化操作
1.字符串的格式化
Python基础——day02_第21张图片
2.填充与对齐
Python基础——day02_第22张图片
十四.数字格式化
Python基础——day02_第23张图片

你可能感兴趣的:(Python基础——day02)