Python第二天(重点为字符串)

赋值

链式赋值:同一对象赋值给多个变量
a=b=123
系列解包赋值:

a, b = 1, 2		#a, b之间有空格,operator之间有空格 
a, b = b, a
print(a, b)

python不支持常量,即逻辑上不能修改(但实际可以)

MAX_SPEED = 200
print(MAX_SPEED)
MAX_SPEED = 600
print(MAX_SPEED)

最基本内置数据类型

  1. 整型:整数
  2. 浮点型:小数
  3. 布尔型:true,false
  4. 字符串型:“abc”
    在这里插入图片描述
    在这里插入图片描述

整数

二进制:0b或0B (0,1)
八进制:0o或0b (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()实现类型转换:

  • 浮点数转为整数,int(9.9)得到的结果为1
  • false和true能分别转化成0和1
  • 含有字母的字符串无法进行类型转换

整数和浮点数相加时自动转化为浮点数

整数可以有多大?
python 3 中 int 可以存储任意大的整数,long被取消。

浮点数

浮点数用科学计数法表示,例如314E-2或314e-2

类型转化:

  1. float()可以把其它类型转化为浮点数
  2. round()可以进行四舍五入
    注:不会改变原有值,而是产生新的值

增强型赋值运算符
在这里插入图片描述
注:"+="之间不能加空格

时间的表示

"unix"时间点:1970年1月1日00:00:00
python中用time.time()代表当前时间,返回的值是以秒为单位,带微妙(1/1000 毫秒)精度的浮点值(是从当前时间到unix时间点的秒数)

import time
b = time.time()
print(b)    #print带有括号
a = int(time.time())
print(a)
total_minute = a//60        #获得整数
print(total_minute)
total_day = a//3600
print(total_day)

practice:绘制折线并计算距离

import turtle
import math
# 定义点坐标
x1, y1 = 100, 50
x2, y2 = 0, 30
x3, y3 = -60, 80
# 绘制折线
turtle.penup()
turtle.goto(x1, y1)
turtle.pendown()
turtle.goto(x2, y2)
turtle.goto(x3, y3)
# 计算距离
distance = math.sqrt((x1-x3)**2+(y1-y3)**2)
turtle.write(distance)

布朗值

布朗值:true和false本质上是1和0

运算符

比较运算符

比较运算符
一个=是赋值,两个=是等于

逻辑运算符

在这里插入图片描述

同一运算符(is)

同一运算符用于比较两个对象的存储单元
is与两个=的区别:
is比较对象的地址,两个=用于比较对象的
is运算符效率比两个=高

整数缓存

python仅对比较小的整数对象进行缓存(范围为[-5,256])→对于该范围的对象,其地址一样
在pycharm中,解释器进行了优化,范围扩大为[-5,任意正整数]

字符串

字符串的本质

字符串的本质:字符序列
python中的字符串是无法改变的

字符串的编码

字符串的编码:python 3支持Unicode,可以表示世界上任何书面语言的字符。
使用内置函数ord()可以把字符转换成对应的Unicode码
使用内置函数chr()可以把十进制数字转换成相应的字符

字符串的创建

引号创建字符串:可以用单引号,也可以用双引号

b = 'I am a "Robot"'
print(b)
I am a "Robot"

空字符串和len()函数

>>>c = ""
>>>len(c)
0

转义字符

转义字符:
在这里插入图片描述

字符串拼接

  1. 使用+将多个字符串联起来。例如“a”+“b” →“ab”
    (a) 如果两边都是字符串,则拼接
    (b) 如果两边都是数字,则加法运算
    © 如果两边类型不同,则出现异常

  2. 可以将多个字面字符直接放在一起实现拼接如“a” “b”→“ab”

字符串复制

>>>a = 'Sxt'*3
>>>a
'SxtSxtSxt'

不换行打印

print(“a”)默认换行符结尾,等同于print(“a”,end="\n")
print(“aa”,end="")
print(“aa”,end="##")

从控制台读取字符串

>>>myname = input("请输入名字:")
请输入名字:
>>>myname
名字
a = input('请输入名字')
print(a)

str()实现数字转型字符串:
str(5.20)→"5.20"

使用[]提取字符:

字符串的本质是字符序列,我们可以通过在字符串后面添加[],在[]里面指定偏移量,可以提取该位置的单个字符。
正向搜索:
最左侧的第一个字符,偏移量是0,第二个偏移量是1,以此类推。直到len(str)-1为止。
反向搜索:
最右侧的第一个字符,偏移量是-1,倒数第二个偏移量为-2,直到-len(str) 为止

replace实现字符串替换

a.replace(‘c’,‘高’)
整个replace过程中,我们创造了新的字符串对象,而不是修改了以前的字符串

a = "ab高defg"
b = a.replace('高', 'c')
c = len(a)
d = 8
e = True                # True首字母大写
print(c == d, end="\\")
print(c == d or e)
print(c, end="\n")
print(a, end="\t")       # 出现的还是原本的a,/代表除法,\代表分隔符
print(b, end="*")        # 出现的是替换后的字符

字符串切片slice操作

切片slice操作可以让我们快速提取字符,标准格式为:
[起始偏移量:终止偏移量:步长]

a = "abcdefg"
b = a[0:2]        # 包头不包尾
print(b)
a = "abcdefg"
b = a[1:4:2]        # 包头不包尾
print(b)
c = a[4]
print(c)

在这里插入图片描述
在这里插入图片描述
操作:

a = "to be or not to be"
b = a[::-1]         # 将字符串倒序输出
print(b)
c = "sxtsxtsxtsxtsxt"
d = c[::3]          # 将所有的s进行提取
print(d)

split分割和join合并

split可以基于制定分割符将字符串分割成多个子字符串。如若不指定分隔符,则默认使用空白分隔符(换行符、空格、制表符)

a = "to be or not to be"
b = a.split()
c = a.split("be")
print(b)
print(c)

join的作用相反,是将字符串拼接起来。

a = ["a", "b", "c"]				#用[]作为子字符串
b = "".join(a)					#用()作为字符串表达,并且和split进行区分
print(b)

拼接字符串要点:
不推荐使用"+"来拼接字符串,因为它会生成新的字符串对象,而join会在拼接之前计算字符串长度,然后注意拷贝,仅生成一次对象。

比较+和join的运算效率(尽量避免使用“+”):

import time
time1 = time.time()
a = ""
for i in range(1, 1000000):
    a += "sxt"
time2 = time.time()
print("运算时间:"+str(time2-time1))
time3 = time.time()
b = []				#因为是序列,因此在这里使用[]
for i in range(1, 1000000):
    b.append("sxt")
time4 = time.time()
print("运算时间:"+str(time4-time3))

字符串驻留

字符串驻留:
仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。对于符合标识符规则的字符串(仅含有_、字母、数字),会启用字符串驻留机制

字符串的比较和同一性

is和not is用来判断是否为同一对象,
!=和==用来判断是否含有相同字符

成员操作符

in/not in作为关键字,判断某个子字符是否在字符串中

a = "aa_66"
b = "aa_66"
print(a is b)
c = "dd#"
d = "dd#"
print(c is d)    #为什么在这里会出现true

常用查找方法

在这里插入图片描述
在这里插入图片描述

去除首尾信息

用strip()除去首尾指定信息
在这里插入图片描述

大小写转化

在这里插入图片描述
格式排版:
center():居中
ljust():左对齐
rjust():右对齐
在这里插入图片描述
其他方法
在这里插入图片描述

a = "sxt"
print(a.isalpha())

格式化

format()基本用法

a = "名字是:{0},年龄是{1}, {0}目前还是学生"			#注意这里是花括号{}
b = a.format("grace", "18")
print(b)

填充和对齐

:后面带填充的字符
^<>分别代表居中,左对齐,右对齐
结尾如果只有数字,那代表总共的字符宽度(包含空格或符号填充的字符)
结尾如果有数字和d或f或,那在定义字符宽度的同时也规定了填充数字的形式

a = "我的名字是{0:^7},年龄是{1:<2},{0}目前还是学生"
b = a.format("grace", "18")
print(b)
c = "我的名字是{0:^7},喜欢的数字是是{1:#<9}。".format("grace", "888")
print(c)

数字格式化

浮点数通过f,整数通过d进行格式化
在这里插入图片描述

a = "我的名字是{0:^7},月收入是{1:.2f}"
b = a.format("grace", 3140)         # 不需要对数字使用引号,因为这里的数字是float
print(b)

可变字符串

我们可以使用io.StringIO()对象或者array模块原地修改字符串(无需创建新的字符串对象,但需要写sio = io.StringIO())

import io
s = "hello sxt"
sio = io.StringIO(s)    # 使用io.StringIO()
sio.seek(7)             # 寻找第七个字符
sio.write("g")          # 对第七个字符进行修改
print(sio.getvalue())
发布了9 篇原创文章 · 获赞 0 · 访问量 316

猜你喜欢

转载自blog.csdn.net/grace_0604/article/details/104554236