Python基础(2)
赋值与常量
赋值
链式赋值:用同一个对象赋值给多个变量,如下所示:
x = y = 123
系列解包赋值:系列数据赋值给相应的个数的变量(个数必须保持一致),如下所示:
a,b,c = 4,5,6
常量
Python不支持常量,即没有语法规则限制改变一个常量的值。
内置数据类型
基本运算符的使用
Python支持整数和浮点数的运算,基本运算符的使用:
’ + ':加法
’ - ':减法
’ * ':乘法
’ / ':浮点数除法,例如:8/2=4.0
’ // ':整数除法,向下取整呢个,即丢掉小数后的数字,例如:7//2=3,20//3=6
’ % ':模,又称取余,例如:7%4=3
’ ** ':幂,例如:2**3=8
整数
>>>12
12
>>>0b101
5
>>>0o10
8
>>>0xff
255
>>>0x10
16
int转换数字类型,将浮点数转换为整数:
>>>int(3.56)
3
自动转型:
整数和浮点数混合运算时,结果自动转为浮点数。
整数大小:
浮点数
浮点数:
称为float,浮点数用科学计数法可表示为:3.14→314E-2或314e-2.
类型转换和四舍五入:
1、可以用float()将其他类型转换为浮点数。
>>>float(3)
3.0
注意:此时的3.0是生成的新对象,与对象3是两个不同的对象了!!!
2、round(value)可以返回四舍五入的值。
增强型赋值运算符:
运算符+、-、*、/、//、** 和%和赋值符=结合构成“增强型赋值运算符”,例如:
a = a + 1
等价于(+=中间不可以加空格!!!):
a += 1
布尔值
Python2中没有布尔值,直接用数字0和1表示False和True。
Python3中,False和True成了关键字,但其本质还是0和1,甚至可以和数字相加。
比较运算符
假设变量a为15,b为30:
逻辑运算符
同一运算符
同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。
注意:is比较的是地址,即id,而==比较的是值,即value!!!
如下,在Python解释器中:
>>>a=1000
>>>b=1000
>>>a == b
True
>>>a is b
False
但在Pycharm中:
a = 1000
b = 1000
print(a is b)
结果为:True
其原因在于:
总的来说,就是在范围内的数被缓存,可重复使用,将范围内的数同时赋给两个变量时,两个变量的id一致,都指向同一对象,而范围外的数赋给同一变量,则两变量id不一致。
字符串
字符串的本质:字符序列
引号创建字符串:
创建单行字符串,单引号或双引号,如下所示:
>>>a = 'Hello World!'
>>>a
'Hello World!'
>>>b = "Hello World!"
>>>b
"Hello World!"
创建多行字符串,连续三个单引号或三个双引号,如下所示(这里的展示用的是PyCharm):
c = """name = 'kkk'
age = 21
school = DUT"""
print(c)
结果:
name = 'kkk'
age = 21
school = DUT
空字符串和len()函数
Python中len()函数返回的是字符串的长度,在Python中也允许空字符串的长度存在。
c = ''
print(len(c))
d = 'djghg'
print(len(d))
结果为:
0
5
转义字符
字符串拼接
字符串的复制
a = 'Six'
print(a*3)
结果为:
SixSixSix
不换行打印
end = “任意字符串”
print('Six',end=',')
print('One',end=',')
print('Two')
结果为:
Six,One,Two
从控制台读取字符串
函数input()
字符串中常用函数
str(): 将括号里内容转为字符串类型
[]: 提取字符,左侧从0开始,右侧从-1开始
>>>a = 'bcdefg'
>>>a[0]
'b'
>>>a = 'bcdefg'
>>>a[2]
'd'
>>>a = 'bcdefg'
>>>a[-2]
'f'
replace(‘变更前内容’,‘变更后内容’): 改变字符串中的某个字符,如下图所示,此时a的id改变了。
a = 'BCDEFG'
a.replace('C','高')
'B高DEFG'
字符串切片操作
切片操作标准格式为:[起始偏移量start:终止偏移量end:步长step]
三个量为正数情况下:
三个量为负数情况下:
split(): 可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符。
>>>a = 'to be or not to be'
>>>a.split()
['to', 'be', 'or', 'not', 'to', 'be']
join(): 将字符串连接起来
>>>a = ['I','love','you']
>>>'*'.join(a)
'I*love*you'
注意:
字符串驻留机制和字符串比较
字符串驻留: 仅保存一份相同且不可变字符串的方法,不同值被存放在字符串驻留池中,Python对于符合标识符规则(即仅包含下划线_、字母和数字)的字符串会启用字符串驻留机制。
>>>a = 'abc_123'
>>>b = 'abc_123'
>>>a is b
True
其中b没有创建新对象,而是引用了a引用的对象,所以a和b指向的是同一对象。但在不符合标识符规则的字符串中不是指同一对象。
字符串比较:
用==,!=对字符串进行比较,是否含有相同字符
用is/not is判断两个对象是否同一个对象
常用的查找方法
去除首尾信息
strip(): 去除字符串首尾指定信息
lstrip(): 去除字符串左边指定信息
rstrip(): 去除字符串右边指定信息
a = '*Six*kkk*'
print(a.strip('*'))
print(a.lstrip('*'))
print(a.rstrip('*'))
结果为:
Six*kkk
Six*kkk*
*Six*kkk
大小写转换
先设定一个变量:
a = “gaoqi love programming,love SXT”
格式排版
center(): :居中
ljust(): 左对齐
rjust(): 右对齐
a = 'Six'
print(a.center(10,'*'))
print(a.center(10))
print(a.ljust(10,'*'))
结果为:
***Six****
Six
Six*******
其他方法
字符串的格式化
format()有三种用法
一种是没有索引号,直接按顺序填充{},如下:
a = '我的名字是:{},年纪为:{}'
print(a.format('zzz',21))
#结果为:
我的名字是:zzz,年纪为:21
第二种加索引号,如下:
a = '我的名字是:{0},年纪为:{1},班级为{2}班'
print(a.format('zzz',21,'3班'))
b = '我的名字是:{1},年纪为:{0},班级为{2}班'
print(b.format(21,'zzz','3班'))
#结果为:
我的名字是:zzz,年纪为:21,班级为3班班
我的名字是:zzz,年纪为:21,班级为3班班
第三种用参数名索引,如下:
a = '我的名字是:{name},年纪为:{age}'
print(a.format(name = 'zzz',age = 21))
#结果为:
我的名字是:zzz,年纪为:21
填充与对齐
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:后面带填充字符,只能一个字符,不指定用空格填充
a = '我的名字是:{name:*^10},年纪为:{age:#<10}'
print(a.format(name = 'zzz',age = 21))
#结果为:
我的名字是:***zzz****,年纪为:21########
数字格式化
浮点数:冒号后面加’.’,再加小数位数,再加f。
整数:和上一节填充与对齐一样,多个d。