python基础知识_day2_字符串

文章目录

  • 1. 赋值
  • 2. 基本数据类型
    • 2.1 数字运算
    • 2.2 进制
    • 2.3 整数和浮点数之间的自动转型
    • 2.4 浮点数
    • 2.5 布尔值
    • 2.6 逻辑运算符
    • 2.7 同一运算符
  • 3. 字符串
    • 3.1 字符串拼接
    • 3.2 str()实现数字转型字符串
    • 3.3 索引
    • 3.4 replace()实现字符串替换
    • 3.4 切片
    • 3.5 split() 分割和join()合并
    • 3.6 字符串的驻留机制
    • 3.7 字符串常用方法
    • 3.8 字符串格式化

1. 赋值

  • 链式赋值

链式赋值用于同一个对象赋值给多个变量

x = y = 123
# 相当于 x = 123, y = 123
print(x) #123
print(y) #123
  • 系列解包赋值

系列数据赋值给对应相同个数的变量(个数必须保持一致)

a,b,c =4,5,6
# 相当于 a=4, b=5,c=6
print(a) #4
print(b) #5
print(c) #6

使用系列解包赋值实现变量互换

a,b = 10,20
a,b=b,a
print(a) #20
print(b) #10
  • 常量

python不支持常量,即没有语法规则限制改变一个常量的值

2. 基本数据类型

python中最基本的内置数据类型

  • 整型
  • 浮点型
  • 布尔型
  • 字符串型

2.1 数字运算

运算符 说明 示例 结果
+ 加法 3+2 5
- 减法 30-5 25
* 乘法 3*6 18
/ 浮点数除法 9/2 4.5
// 整数除法 7//2 3
% 7%4 3
** 2**3 8
#同时获得商和余数,返回的是一个元组
print(divmod(7,2)) 
#(3, 1)

2.2 进制

python中,除10进制,还有其他三种进制

0b或0B,二进制 0 1

0o或0O,八进制 0 1 2 3 4 5 6 7

0x或0X, 十六进制 0 1 2 3 4 5 6 7 8 9 a b c d e f

  • 使用int()实现类型转换:

  • 浮点数直接舍去小数部分

  • 布尔值True转为1,False为0

  • 字符串符合整数格式则直接转成对应整数

  • 进制转换

print(bin(21)) #0b10101 十进制转二进制
print(int('0b10101',2))  #21 二进制转十进制

2.3 整数和浮点数之间的自动转型

整数和浮点数混合运算是,表达式结果自动转型成浮点数

print(2+8.0) #10.0

2.4 浮点数

类型转换和四舍五入

  • 类似于int(),我们可以使用float()将其他类型转化成浮点数
print(float(3)) #3.0
#3.0为一个新生成的对象

print(float('3.14')) #3.14
  • 使用round()函数实现四舍五入操作
print(round(3.14)) #3
print(round(4.56)) #5
print(round(3.143242,2)) #3.14 可以指定保留小数的位数

2.5 布尔值

True和False为关键字,但他们的本质还是1和0,甚至可以和数字相加

a = True
b = 3
print(a+b) #4

2.6 逻辑运算符

运算符 格式 说明
or x or y x为 Ture, 则不计算y, 直接返回True; x为Flase, 则返回y
and x and y x 为True, 则返回y; x 为False, 则不计算y, 直接返回False
not not x x 为Ture, 返回False; x为False,返回True

2.7 同一运算符

同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址

运算符 描述
is is 是判断两个标识符是不是引用同一个对象
is not is not 是判断两个标识符是不是引用不同对象

3. 字符串

3.1 字符串拼接

可以使用+将多个字符串拼接起来

可以将多个字面字符串直接放到一起实现拼接

c= 'aa' 'bb'
print(c) #aabb
#'aa'和'bb'之间有无空格均可

3.2 str()实现数字转型字符串

a = str(5.20)
print(a,type(a)) #5.2 

3.3 索引

正向搜索:最左侧第一个字符,索引为0;最左侧第二个字符,索引为1;直到len(str)-1

反向搜索:最右侧第一个字符,索引为-1;最右侧第二个,索引为-2;直到-len(str)

a = 'abcdefghijk'
print(a[1]) #b
print(a[-2]) #j

3.4 replace()实现字符串替换

字符串是不可变的,只能通过replace()重新生成一个新的字符串

a = 'abcdefghijk'
a = a.replace('k','mmmm') #生成新的字符串,并重新赋值给变量a
print(a)
#abcdefghigmmmm

3.4 切片

快速的提取子字符串,标准格式为:

[起始索引:终止索引:步长],顾头不顾尾

操作和说明 示例 结果
[:] 提取整个字符串 ‘abcdef’ [:] ‘abcdef’
[start:] 从start索引开始到结尾 ‘abcdef’ [2:] ‘cdef’
[:end] 从头开始到end-1 ‘abcdef’ [:2] ‘ab’
[start:end] 从start开始到end-1 ‘abcdef’ [2:4] ‘cd’
[start:end:step] 从start提取到end-1,步长是step ‘abcdef’ [1:5:2] ‘bd’
  • 三个量为负数
示例 说明 结果
‘abcdefghijk’[-3:] 从倒数第三个取到最后 ‘ijk’
‘abcdefghijk’[-8,-3] 倒数第八个到倒数第三个(不含倒数第三个),顾头不顾尾 ‘defgh’
‘abcdefghijk’[::-1] 步长为负,从右往左反向提取 ‘kjihgfedcba’
  • 切片操作时,终止索引 > len(str) 这个范围,也不会报错

终止索引 > len(str) ,会被当作[起始索引:],取到最后

a = 'abcdefghijk'
a = a[:30] #abcdefghijk

3.5 split() 分割和join()合并

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

pya = 'to be or not to be'
b = a.split('to') #jk
print(b) #['', ' be or not ', ' be']

join()的作用和split()作用刚好相反,用于将一些列子字符串连接起来

join()通常与列表联合起来使用

a = ['', ' be or not ', ' be']
b = '#'.join(a)
print(b)

3.6 字符串的驻留机制

字符串驻留:仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。

python支持字符串驻留机制,对于符合标识符规则的字符串(字符、字母、中文和数字组成的字符串)会启用字符串驻留机制。

a = 'abc_123_中国#$%@^)('
b = 'abc_123_中国#$%@^)('
print(a is b) #True

3.7 字符串常用方法

a=‘今天我们学习字符串我们’

方法和示例 说明 结果
len(a) 字符串长度 11
a.startswith(‘我是’) 以指定字符串开头 True
a.endswith(‘字符串’) 以指定字符串结尾 False
a.find(‘我们’) 第一次出现指定字符串的位置 2
a.rfind(‘我们’) 最后一次出现指定字符串的位置 9
a.count(‘我们’) 指定字符串出现了几次 2
a.isalnum() 所有字符全是字母、中文或数字 True
  • 去除首尾信息

  • 默认去除空白字符(换行符,空格,制表符)

a = "  \n \t今天我们学习字符串我们 \t"
print(a.strip()) 
#今天我们学习字符串我们
  • 可以指定去除指定的字符
a = '**今天我们学习字符串我们**'
print(a.strip('*')) 
#今天我们学习字符串我们
  • 也可以选择左去除或右去除
a = '**今天我们学习字符串我们**'
print(a.lstrip('*'))
# 今天我们学习字符串我们**
  • 大小写转化

a = ‘tom is a DOG’

示例 说明 结果
a.capitalize() 产生新的字符串,首字母大写 Tom is a dog
a.title() 产生新的字符串, 每个单词首字母大写 Tom Is A Dog
a.upper() 产生新的字符串,所有字母全转成大写 TOM IS A DOG
a.lower() 产生新的字符串,所有字母全转成小写 tom is a dog
a.swapcase() 产生新的字符串,所有字母大小写转换 TOM IS A dog
  • 格式排版

center()、ljust()、rjusr()

a = 'sxt'
print(a.center(10,'*'))# ***sxt****
print(a.ljust(10,'*')) # sxt*******
print(a.rjust(10,'*')) #*******sxt
  • 数字,字母方法

isalnum() 是否为字母、中文或数字

isalpha() 是否为字母(含中文)

isdigit() 是否全部由数字组成

isupper() 是否全部为大写

islower() 是否全部为小写

isspace() 是都全部为空格

3.8 字符串格式化

%d 表示格式化整数

%s 表示格式化字符串

a = '{0} is a good {1}'.format('CICI','cat')
print(a)

a = '{0} is a good {content}'.format('CICI',content='cat')
print(a) #关键字参数一定要在位置参数后

content = 'CAT'
name = 'CICI'
a = f'{name} is a good {content}'
print(a)

content = 'CAT'
name = 'CICI'
a = '%s is a good %s'%(name,content) 
print(a)
  • 数字的格式化

在替换域中,冒号表示格式化符号的开始

e.g. 小数的表示

.2 表示四舍五入到保留两位小数

f 表示浮点数

num = 3.1415926
a = '我喜欢的数字是{:.2f}'.format(num)
print(a) # 我喜欢的数字是**3.14**
  • 填充和对齐

^、<、>分别是居中、左对齐、右对齐,后面带宽度

:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充

标准格式----> (冒号) : 填充字符 对齐方式 宽度

name = 'alex'
num = 3.14
a = '我是{0},我喜欢的数字是{1:*^8}'.format(name,num)
print(a) # 我是alex,我喜欢的数字是**3.14**

name = 'alex'
num = 3.14
a = '我是{0},我喜欢的数字是{n:*^8}'.format(name,n=num)
print(a) # 我是alex,我喜欢的数字是**3.14**

你可能感兴趣的:(Python基础知识,python)