Python基础(第二节)

链式赋值:
同一个对象赋值给多个变量
例:x = y = 123
系列解包赋值:
系列数据赋值给对应相同个数的变量(个数保持一致)
a,b,c = 4,5,6
还可以实现变量值的互换

>>> m,n = 1,2
>>> m,n = n,m
>>> print(m,n)
2 1

关于常量:
Python不支持常量,只能约定常量的命名规则

最基本的内置数据类型(type)
整形
浮点型
布尔型 仅包含True、False
字符串型 “xxx”

数字的运算
1、加、减、乘
2、/ :浮点数除法
3、// :整数除法 例:7 // 2 == 3

PS:
0不能作除数,会报错
divmod()函数可以同时得到商和余数,返回的是一个元组

4、% :模(取余) 例:7 % 4 == 3
5、** :幂 例:2 ** 3 == 8

整数

关于进制
Python中除了10进制还有二进制、八进制、十六进制
这三种进制可以非常方便的进行位运算操作
二进制:0b或0B
八进制:0o或0O
十六进制:0x或0X

整数类型的转换
1、int()
直接舍去小数部分
布尔值True转1、False转0
字符串若符合整数格式直接转成对应整数
2、round()
可以返回四舍五入的值
3、自动转型:整数与浮点数混合运算时,表达式结果自动转成浮点数。

PS:Python3中int可以存储任意大小的整数,特别适合做科学运算

浮点数float

科学计数法:314e-2或314E-2

浮点数类型转换:函数float()
类型转换并不是更改对象的type,而是生成了新的对象

增强型赋值运算符(注意中间不能加空格)
1、+=
2、-=
3、*=
4、/=
5、//=
6、**=
7、%=

附加知识:时间的表示
1、计算机的时间从1970年1月1日00:00:00开始的,以毫秒进行计算,把这个时刻称为“unix时间点”
2、Python中可以通过time.time()获得当前时刻,返回的值是以秒为单位、带微妙精度的浮点值

返回布尔值的运算符

比较运算符

1、==
2、!=
3、<
4、>
5、>=
6、<=

逻辑运算符
1、or
x or y:x为true,返回true(短路现象,不会计算y);x为false,返回y值。
2、and
x and y:x为true,返回y值;x为false,直接返回false(短路现象,不会计算y)。
3、not
not x:x为true,返回false;x为false,返回true。

同一运算符
1、实际是比较两个对象的地址
2、is : 判断两个标识符是不是引用同一个对象
3、is not : 判断两个标识符是不是引用不同的对象

PS :is与==的区别:前者比较identity,后者比较value

整数缓存问题
1、cmd交互模式中,对于比较小的整数对象[-5,256],Python会缓存起来,即地址相同
2、在pycharm或者保存文件执行时,这一范围变成[-5,任意正整数]

字符串

字符串
1、字符串就是字符序列,Python中字符串是不可变的,只能将其一部分复制到新创建的字符串
2、Python中没有单字符的概念,只有字符串

字符串的编码
1、Python3直接支持Unicode,默认是16位Unicode编码,可以表示世界上任何书面语言的字符(ASCII是Unicode编码的子集)
2、ord()函数可以把字符串转换为对应的Unicode码
3、chr()函数可以把十进制数字转换成对应的字符

创建字符串
1、引号创建字符串:使用单引号或双引号(避免歧义,例子如下)
a = “I’m a teacher”
2、连续使用三个单引号或多引号,可以创建多行字符串
3、Python允许空字符串存在,不包含任何字符,长度为0
例:c = ‘’

转义字符
使用“\+特殊字符”,实现某些难以用字符表示的效果
\(在行尾时) 续行符
\ 反斜杠符号
’ 单引号
" 双引号
\b 退格
\n 换行
\t 横向制表符
\r 回车

>>> a = 'I\'m a teacher'
>>> print (a)
I'm a teacher

字符串拼接
1、可以使用+将多个字符串拼接起来
① 如果+两边都是字符串,则拼接
例:a = ‘abc’+‘def’
② 如果+两边都是数字,则加法运算
③ 如果+两边类型不同,则抛出异常
2、将多个字面字符串直接放到一起实现拼接
例:a = ‘abc’‘def’

字符串复制
使用*实现字符串复制

>>> a = 'abc'*3
>>> a
'abcabcabc'

不换行打印
正常调用print时,会自动打印一个换行符;如果不想添加换行符,可以通过添加end = ‘任意字符串’,实现末尾添加任何内容

>>>print('abc',end = '')
>>>print('hello')
abchello

从控制台读取字符
使用input()函数从控制台读取键盘输入的内容

>>>myname = input("请输入名字:")
请输入名字:wyj

数字转型字符串
str()函数可以将其他数据类型转换为字符串

使用[]提取字符
1、正向搜索:最左侧第一个字符偏移量为0,第二个偏移量为1,以此类推,直到 len(str)-1
2、反向搜索:最右侧第一个字符偏移量为-1,倒数第二个偏移量是-2,以此类推,直到-len(str)

replace()实现字符替换

>>> a = 'abcdefg'
>>> a[6]
'g'
>>> a.replace('c','z')
'abzdefg'

PS:返回的是新的字符串,原来字符串是不变的

字符串切片slice操作
1、标准格式为[起始偏移量:终止偏移量:步长]

>>> a = 'abcdefg'
>>> a[1:5]
'bcde'
>>> a[1:6:2]
'bdf'

2、特殊写法
[:] 提取整个字符串
[start:] 从start开始索引到借位
[:end] 从开头开始到end-1
[-3:] 倒数三个
[-8:-3] 倒数第八个到倒数第四个(包头不包尾)
[::-1] 步长为负,从右往左反向提取

PS:切片操作时,start和end不在[0,len(str)-1]范围时,也不会报错,start小于0时会当做0,end大于len(str)-1时会被当做-1(即取到最开始或最结尾)

split() 分割
可以基于指定分隔符将字符串分割成多个子字符串(存储在列表中)
如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)为分割符

>>> a = "to be brave"
>>> a.split()
['to', 'be', 'brave']
>>> a.split("be")
['to ', ' brave']

join() 合并
用于将一系列子字符串通过某个字符串连接起来

>>> a = ["s","b","d"]
>>> "*".join(a)
's*b*d'

PS:涉及到性能时,要尽量用join()而不用字符串 + 字符串,后者会生成新的字符串,影响程序的运行时间

字符串驻留机制
对于符合规则的字符串(仅包含下划线、字母和数字),仅保存一份相同且不可变字符串的方法,即不同变量引用同一对象

成员操作符
in/not in 判断某个字符串(子字符串)是否在字符串中

字符串常用的查找方法
len() :字符串长度
a.startswith(“str”) :是否以指定字符串开头
a.endswith(“str”) :是否以指定字符串结尾
a.find(“str”) :第一次出现指定字符串的位置
a.rfind(“str”) :最后一次出现指定字符串的位置(即反向搜索)
a.count(“str”) :指定字符串出现了几次
a.isalnum() :所有字符是否全是字母或数字

字符串去除收尾信息
strip() :去除字符串首尾指定信息(默认空格)
lstrip() :去除字符串左边的指定信息(默认空格)
rstrip() :去除字符串右边的指定信息(默认空格)

大小写转换
a.capitalize() :产生新的字符串,首字母大写
a.title() :产生新的字符串,每个单词都首字母大写
a.upper() :产生新的字符串,所有字符全转成大写
a.lower() :产生新的字符串,所有字符全转成小写
a.swapcase() :产生新的字符串,所有字符进行大小写转换

格式排版
center() :居中
ljust() :左对齐
rjust() :右对齐

>>> a = "wyj"
>>> a.center(10,"*")
'***wyj****'
>>> a.center(10)
'   wyj    '
>>> a.ljust(10,"*")
'wyj*******'

检查函数
isalnum() :是否为字母或数字
isalpha() :是否只由字母组成(含汉字)
isdigit() :是否只由数字组成
isspace() :是否为空白符(制表符、换行符、空格)
isupper() :是否为大写字母
islower() :是否为小写字母

字符串的格式化
1、利用{}语法 以及 str.format()函数

>>> a = "名字是:{0},年龄是:{1}"
>>> a.format("wyj",22)
'名字是:wyj,年龄是:22'

>>> b = "名字是{name},年龄是{age}"
>>> b.format(age=22,name='王誉钧')
'名字是王誉钧,年龄是22'

2、延伸功能:填充与对齐
:后边带填充的字符(只能是一个字符),不指定则用空格填充;
^、<、>分别是居中、左对齐、右对齐,后面带宽度

>>> "{:*<10}".format("王誉钧")
'王誉钧*******'

>>> "我是{0},今年{1:*^10}岁".format("王誉钧","22")
'我是王誉钧,今年****22****岁'

数字格式化
浮点数通过f,整数通过d进行所需要的格式化

>>> "我是{0},我的存款有{1:.2f}".format("王誉钧",100000.0123)
'我是王誉钧,我的存款有100000.01'

PS:数字格式化语法有很多,查表即可

发布了14 篇原创文章 · 获赞 0 · 访问量 391

猜你喜欢

转载自blog.csdn.net/Bro_Jun/article/details/104706823