字符串是 Python 中最常用的数据类型。我们一般使用引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可。
str1 = 'abcdefg'
str2 = "hello world"
name1 = '''I am Tom, Nice to meet you!'''
name2 = """I am Jennify,
Nice to meet you!"""
目标:创建str1 = 'I'm Tom'
str1 = 'I\'am Tom'
str1 = "I\'am Tom"
在Python代码中,我们可以使用input()
方法来接收用户的输入信息。记住:在Python中,input()方法返回的结果是一个字符串类型
的数据。
① input()可以阻断当前正在执行的代码,让系统处于等待状态,直到用户输入完成
② input()方法接收到的所有数据,返回的数据类型都是字符串
print(变量名称)
百分号(Python2和Python3)
name = input('请输入您的姓名:') age = int(input('请输入您的年龄:')) address = input('请输入您的住址:') print('我的名字是%s,今年%d岁了,家里住在%s...' % (name, age, address))
format方法(Python3)
name = input('请输入您的姓名:') age = input('请输入您的年龄:') address = input('请输入您的住址:') print('我的名字是{},今年{}岁了,家里住在{}...'.format(name, age, address))
f形式(Python3)
name = input('请输入您的姓名:') age = input('请输入您的年龄:') address = input('请输入您的住址:') print(f'我的名字是{name},今年{age}岁了,家里住在{address}...')
延伸:
name = input('请输入您购买商品的名称:')
price = float(input('请输入您购买商品的价格:')) # 18.5
print(f'购买商品名称:{name},商品价格:{price:.2f}')
在计算机中,Python中的字符串属于序列结构。所以其底层存储占用一段连续的内存空间。
str1 = 'itheima'
结构原理图:
索引的最大值 = len(字符串) - 1
7个字符,则索引下标的最大值为7-1 = 6
注意:索引下标从0开始。
索引下标
,就是编号。比如火车座位号,座位号的作用:按照编号快速找到对应的座位。同理,下标的作用即是通过下标快速找到对应的数据。
name = 'abcdef'
print(name[0]) # a
print(name[3]) # d
所谓的切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
顾头不顾尾:
序列名称[开始位置下标:结束位置下标:步长(步阶)] numstr = '0123456789' numstr[0:3:1] # 012 => range方法非常类似,步长:每次前进1步 numstr[0:3:2] # 02 => 每次前进2步 步长可以为负数,正数代表从左向右截取,负数代表从右向左截取
① 不包含结束位置下标对应的数据, 正负整数均可;
② 步长是选取间隔,正负整数均可,正数从左向右,负数从右向左。默认步长为1。
记口诀:==切片其实很简单,只顾头来尾不管,步长为正正向移,步长为负则逆向移==
numstr = '0123456789' # 1、从2到5开始切片,步长为1 print(numstr[2:5:1]) print(numstr[2:5]) # 2、只有结尾的字符串切片:代表从索引为0开始,截取到索引为5的位置(不包含索引为5的数据) print(numstr[:5]) # 3、只有开头的字符串切片:代表从起始位置开始,已知截取到字符串的结尾 print(numstr[1:]) # 4、获取或拷贝整个字符串 print(numstr[:]) # 5、调整步阶:类似求偶数 print(numstr[::2]) # 6、把步阶设置为负整数:类似字符串翻转 print(numstr[::-1]) # 7、起始位置与结束位置都是负数 print(numstr[-4:-1]) # 8、结束字符为负数,如截取012345678 print(numstr[:-1])
案例3:给定一个图片的名称为"avatar.png",使用Python方法获取这个图片的名称(avatar)以及这个图片的后缀(.png)。
分析:
① 建议先获取点号的位置(目前还未学习,只能一个一个数)
② 从开头切片到点号位置,得到的就是文件的名称
③ 从点号开始切片,一直到文件的结尾,则得到的就是文件的后缀
filename = 'avatar.png' # 获取点号的索引下标 index = 6 # 使用切片截取文件的文件 name = filename[:index] print(f'上传文件的名称:{name}') # 使用切片截取文件的后缀 postfix = filename[index:] print(f'上传文件的后缀:{postfix}')
所谓字符串查找方法即是查找子串在字符串中的位置或出现的次数。
基本语法:
字符串.find(要查找的字符或者子串)
编号 | 函数 | 作用 |
---|---|---|
1 | find() | 检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则返回-1。 |
2 | index() | 检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则报异常。 |
作用:检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则返回-1。
# 定义一个字符串 str1 = 'hello world hello linux hello python' # 查找linux子串是否出现在字符串中 print(str1.find('linux')) # 在str1中查找不存在的子串 print(str1.find('and'))
index()方法其功能与find()方法完全一致,唯一的区别在于当要查找的子串没有出现在字符串中时,find()方法返回-1,而index()方法则直接报错。
str1 = 'apple, banana, orange' # 判断apple是否出现在字符串str1中 print(str1.index('apple')) print(str1.index('pineapple'))
所谓修改字符串,指的就是通过函数(方法)的形式修改字符串中的数据。
编号 | 函数 | 作用 |
---|---|---|
1 | replace() | 返回替换后的字符串 |
2 | split() | 返回切割后的列表序列 |
3 | title() | 所有单词首字母大写 |
4 | upper()与lower() | 返回全部大写或小写的字符串 |
基本语法:
字符串.replace(要替换的内容, 替换后的内容, 替换的次数-可以省略)
目前在工作中,replace主要用于实现关键字替换或过滤功能。北京 ==> BJ,论坛关键字过滤
作用:对字符串进行切割操作,返回一个list()列表类型的数据
str1 = 'apple-banana-orange' print(str1.split('-'))
作用:和split()方法正好相反,其主要功能是把序列拼接为字符串
字符串.join(数据序列)
案例:把水果列表['apple', 'banana', 'orange']拼接成'apple-banana-orange'
list1 = ['apple', 'banana', 'orange'] print('-'.join(list1))
upper():把字符串全部转换为大写形式
lower():把字符串全部转换为小写形式
所谓判断即是判断真假,返回的结果是布尔型数据类型:True 或 False。
编号 | 函数 | 作用 |
---|---|---|
1 | startswith() | 检查字符串是否是以指定子串开头,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。 |
2 | endswith() | 检查字符串是否是以指定子串结尾,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。 |
作用:检查字符串是否是以指定子串开头,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。
str1 = 'python program' print(str1.startswith('python'))
作用:检查字符串是否是以指定子串结尾,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。
str2 = 'avatar.png' print(str2.endswith('.png')) if str2.endswith('.png') or str2.endswith('.jpg') or str2.endswith('.gif'): print('是一张图片格式的图片') else: print('您上传的文件格式异常')
列表一次可以存储多个数据。列表序列名称 = [列表中的元素1, 列表中的元素2, 列表中的元素3, ...]
注意:列表可以一次存储多个数据且可以为不同的数据类型
列表的作用是一次性存储多个数据,程序员可以对这些数据进行的操作有:增、删、改、查。
直接使用索引下标获取列表中的某个元素:
list1 = ['apple', 'banana', 'pineapple'] # 获取列表中的banana print(list1[1])
查操作的相关方法:
index() 指定数据所在位置的下标
count() 统计指定数据在当前列表中出现的次数
in 判断指定数据在某个列表序列,如果在返回True,否则返回False
not in 判断指定数据不在某个列表序列,如果不在返回True,否则返回False
names = ['孙悟空', '唐僧', '猪八戒'] # 在列表的尾部追加一个元素"沙僧" names.append('沙僧') # 打印列表 print(names)
注意:列表追加数据的时候,直接在原列表里面追加了指定数据,即修改了原列表,故列表为可变类型数据。
☆ extend()方法
列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表
extend方法比较适合于两个列表进行元素的合并操作
☆ insert()方法
作用:在指定的位置增加元素
编号 | 函数 | 作用 |
---|---|---|
1 | del 列表[索引] | 删除列表中的某个元素 |
2 | pop() | 删除指定下标的数据(默认为最后一个),并返回该数据 |
3 | remove() | 移除列表中某个数据的第一个匹配项。 |
4 | clear() | 清空列表,删除列表中的所有元素,返回空列表。 |
编号 | 函数 | 作用 |
---|---|---|
1 | 列表[索引] = 修改后的值 | 修改列表中的某个元素 |
2 | reverse() | 将数据序列进行倒叙排列 |
3 | sort() | 对列表序列进行排序 |
列表的嵌套:列表中又有一个列表,我们把这种情况就称之为列表嵌套
元组特点:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。
元组可以存储多个数据且元组内的数据是不能修改的。
基本语法:
# 多个数据元组 tuple1 = (10, 20, 30) # 单个数据元组 tuple2 = (10,)
注意:如果定义的元组只有一个数据,那么这个数据后面也要添加逗号,否则数据类型为唯一的这个数据的数据类型。
函数的参数和返回值,一个函数可以接受任意多个参数,或者依次返回多个数据
格式化字符串,百分号和format,格式化字符串后面的()本质上就是一个元组
print('姓名:%s,年龄:%d,家庭住址:%s' % (name, age, address))
让列表不可以修改,以保护数据安全
由于元组中的数据不允许直接修改,所以其操作方法大部分为查询方法。
编号 | 函数 | 作用 |
---|---|---|
1 | 元组[索引] | 根据==索引下标==查找元素 |
2 | index() | 查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index方法相同 |
3 | count() | 统计某个数据在当前元组出现的次数 |
4 | len() | 统计元组中数据的个数 |