内容正文:
第1节 字符串(1课时)
第3章 字符串、队列和栈
浙教版(2019) 选修一
字符串的概念与特性
01
字符串的基本操作
02
学习目录
通过实际问题,恰当地选择字符串结构,并总结字符串的概念、特性及基本操作。
01
熟练掌握字符串连接、切片等基本操作。
03
体验用字符串解决问题的基本流程,逐步形成运用字符串结构解决问题的思维方式和学科方法。
02
学习目标
PART 01
字符串的概念与特性
新课导入
看
看
一
拥堵的城市交通图
新课导入
想
想
一
在限行规则下,如何快速获取违章车辆。
问题
小组合作、讨论、设计分析违章车辆的算法。
1.车牌号有什么特点?
2.以哪种方式存储车牌最佳?
提问
新课导入
车牌号是由数字和字母组成的。
大量的有规律数据可以用字符串来存储、处理相应的数据,实现对应的功能。
什么是字符串?
字符串的概念与特性
一
概念
字符串是由零个或多个字符组成的有限序列。
字符来自哪里?
128个字符
大小写英文字母
数字
控制
字符
标点
符号
……
文字
字符
字符串的概念与特性
一
一个字符串中可以包含多种字符集字符。
GB18030字符集
BIG5
字符集
Unicode字符集
常见的字符集
GBK字 符集
ASCII字符集
GB2312字符集
添加标题
字符集是多个字符的集合,种类较多。每个字符集包含的字符个数不同。
字符串的概念与特性
一
字符串中所包含的字符个数称为字符串的长度。
“Hello World”
双引号或单引号加以界定
空格也是一个字符
包含11个字符,不包括双引号
字符串的概念与特性
一
在字符串的应用中,会涉及一些特殊的字符串。
空串:空串是不包含任何字符的串,其长度为零。
空格串:空格串是由空格组成的字符串,其长度为空格字符的个数。
一个字符串中任意个连续的字符序列称为该字符串的子串。例如,字符串S为“HelloWorld”,字符串“H”,“He”,“el”,“ell”,“World”等都是S的子串。串S也是串S的子串。除S本身外,S的其他子串称为S的真子串。
字符串的概念与特性
一
特性
(1)
STEP
有限
序列性
۞字符串是一种线性表结构。
۞数据元素个数是有限的。
۞由零个或多个字符组成。
۞可使用序列切片操作
除第一个和最后一个元素外,其他元素都有一个唯一的前驱和后继,有正索引标号和负索引标号。
字符串“Hello World”的索引标号
字符串的概念与特性
一
(2)
STEP
可比性
۞在排序、词频统计、查找文本等操作中,需要对字符
串进行比较。
۞按ASCII码值进行比较
۞根据编码的方式进行比较
比如字符串“word”与“work”,前3个字符一样,第4个字符“k”的ASCII码值大于字符“d”的ASCII码值,因此字符串“work”大于字符串“word”。当字符串中仅有数字字符时,采用同样的比较方式,如“9”大于“10”。对于含有非ASCII字符集的字符串,需要根据编码的方式进行比较。
字符串的概念与特性
一
只需知道数据之间相互链接的顺序
探讨与讨论
一
数组与字符串有哪些区别?
1.定义不同:字符数组是用来存储一系列字符的数组。字符串是由一系列字符组成的字符序列。
2.长度不同:字符数组的大小在编译时就必须确定,大小固定不可变。字符串在编译时并没有确定大小,一般通过字符串长度来获取它的长度。
3.元素不同:字符数组的元素是字符类型。字符串的元素是字符类型,并且在使用字符串时,除第一个元素外,其他元素都为'\0'。
4.存储方式不同:字符数组一般通过数组下标的方式访问。5.功能不同:字符数组除了存储字符外,还可以执行一些字符操作。字符串除了存储字符外,还可以进行字符串的一些操作,如拼接、拷贝、截断、连接等操作。
字符串的基本操作
二
字符串的操作
04
03
02
01
从字符串中提取子串
将字符串转换成小写
将字符串转换成大写
字符串匹配
创建
常用单引号()、双引号("")和三个单引号或双引号来创建。
例如:var1 = 'Hello World!'
var2 = "Python"
字符串的基本操作
二
01
子串判断
子串判断用于检查字符串a是否为字符串S的子串。
在Python中,可以用in运算实现,格式为“字符串a in 字符串S”。
当字符串S包含字符串a时,值为True,否则值为False。
Python程序展示
用in运算
字符串的基本操作
二
02
求子串
用于从字符串中取出其子串。
在Python中,可以用切片实现。
格式为“字符串[位置i:位置j]”。
S[i:j]表示取字符串S的索引下标i至j–1范围内的子串
S[6:11]为取字符串S中第7个至第11个位置上的字符,得到子串“World”。
字符串的基本操作
二
02
求子串
使用[]来截取字符串。即:序列的索引和切片操作。
格式为:字符串[start:stop:step],对字符串下标[start,stop)进行步长为step的提取
例如
以S=“我爱学习Python”为例
变式 表达式 值
S[start:stop] 步长为1时,其中step可省略 S[0:2] “我爱”
S[:stop] start为0时,可省略 S[:1] “我”
S[start:] stop为序列长度时,可省略 S[4:] “Python”
S[:] start,stop为默认值时,可省略 S[:] “我爱学习Python”
字符串的基本操作
二
只需知道数据之间相互链接的顺序
探讨与讨论
一
已知字符串a"人生苦短,我用Python”,则下列说法正确的是( )
A.a[5]的值为",",a[:5]的值为"人生苦短"
B.a[5]的值为"我”,a[:5]的值为"人生苦短"
C.a[-5]的值为"y",a[-5:]的值为" thon "
D.a[-5]的值为"用",a[-5:]的值为"ython "
C
字符串的基本操作
二
03
字符串的连接
用于把两个字符串连接在一起。
在Python中,用“+”号连接符实现。
格式为“字符串S1+字符串S2”。
(1)
(2)
直接拼接
直接将两个字符串常量紧挨着写在一起就可以了。
例如:strname = "abc" "hig"- strname = “abchig”
若有变量,则需【+】运算符拼接
【+】运算符也能拼接字符串常量
例如:str1=“Python”
strname = str1 +“语言”
strname = “Python语言”
字符串的基本操作
二
03
字符串的连接
Python程序如下
字符串的基本操作
二
Python中内置了非常丰富的字符串函数与方法,可直接调用。
函数和方法 功能 实例
len(x) 统计字符串x中字符的个数 x="Hello!"
print(len(x))
输出为:6
x.find(y) 返回字符串x中子串y出现的首字符下标,若找不到,则输出–1 x="Hello!"
y="llo"
print(x.find(y))
输出为:2
x.split(str="",num=string.count(str)) 以str分隔符切片 x,如果 num有指定值,那么仅分隔 num 个子串。切片得到的值存储在列表中 x="I like Python"
list=x.split()
print(list)
输出:
['I', 'like', 'Python']
字符串的基本操作
二
Python中内置了非常丰富的字符串函数与方法,可直接调用。
函数和方法 功能 实例
x.replace(old,new[, max]) 返回字符串中的old(旧字符串)替换成new(新字符串)后生成的新字符串,如果指定第三个参数max,那么替换不超过max次 x="is is is is"
print(x.replace("is", "was"))
print(x.replace("is", "was", 3))
输出:
was was was was
was was was is
x.upper() 把字符串x中的小写字母转换成大写字母 x="I like Python"
y=x.upper()
print(y)
输出:
I LIKE PYTHON
x.lower() 把字符串x中的大写字母转换成小写字母 x="I like Python"
y=x.lower()
print(y)
输出:
i like python
字符串的基本操作
二
例一
回文串
从左往右读和从右往左读都一样的字符串称为回文串,比如“客上天然居,居然天上客”。输入一个字符串,写一个程序,判断该字符串是否为回文串。
根据回文串的特点,只要字符串左右对称,它就是回文串。判断字符串的左右对称时,可以先找到中间位置,采用切片操作,取出字符串的左半部分,存储到字符串变量left中;再采用切片操作,取出右半部分并反转,存储到字符串变量right中。若left与right相等,则为回文串。
字符串的基本操作
二
用Python实现的程序如下:
字符串的基本操作
二
可以直接利用Python语言中的字符串反转命令[::–1],直接反转原字符串,再与原字符串比较。程序如下:
字符串的基本操作
二
例二
机动车违章识别系统
随着机动车数量的增长,一些城市为了缓解交通压力,采取了错峰出行的措施。错峰出行,即划定区域在工作日的上下班高峰时段内,禁止挂有外地车牌和车牌尾号是某些数字的本地车牌的车辆行驶。某城市(车牌城市代码为城B)在工作日的7:00—9:00、16:30—18:30内,周一限行车牌数字尾号1和9,周二限行车牌数字尾号2和8,周三限行车牌数字尾号3和7,周四限行车牌数字尾号4和6,周五限行车牌数字尾号5和0,外地车牌全部限行。现有某个路口一周的车辆通行信息,部分信息如表3.1.3所示。请编写程序,输出违章车辆的车牌号码和车主姓名。
字符串的基本操作
二
部分车辆通行信息表
1.抽象与建模
(1)
(2)
外地车牌且行驶时间在周一至周五。
本地车牌且车牌数字尾号与限行数字尾号匹配。
字符串的基本操作
二
1
2
5
2.设计
算法
用字符串变量car存储“车牌号码”,字符串变量name存储“车主姓名”,数值变量w存储“星期”。
在字符串car中,取前2个字符,判断是否为“城B”。若是“城B”,则为本地车牌,执行③;否则,为外地车牌,执行④。
重复①、②、③、④操作,直至所有车辆处理完毕。
用字符串
存储 “车 牌号
码”,通过 索引、
字符串的比较等操作,确定车辆的城市代码。
如果是本地车牌,从右
往左枚举车牌号码,找 到第一个数字,即为该车牌的数字尾
号。再根据限行规则,
与“星期”数据逐一
比较。
从右往左扫描字符串car,找到第一个数字,存入变量num中,代表车牌的数字尾号。用week存储限行的星期字符串“12345”,代表周一至周五,t存储该车的数字尾号在星期几限行。根据数字尾号的限行规则,当num=0时,t=week[4] ;当1≤num≤5时,t=week[num–1] ;当num>5时,则t=week[9–num]。再将t与w值进行比较,若相等,则车辆违章,输出车牌号码和车主姓名。
3
若w的值为6或7,则该车辆不违章;否则,车辆违章,输出车牌号码和车主姓名。
4
字符串的基本操作
二
3.编写
程序
字符串的基本操作
二
1.有如下python程序段:
s=“Python3.8”
ans=“ ”
for ch in s:
if ch.isupper( ):
ans+=ch.lower( )
elif ch.islower( ):
ans+=ch.upper( )
else:
ans+=ch
print(ans)
则程序执行后,输出的结果为( )
A.Python B.Python3.8
C.pYTHON D.pYTHON3.8
D
课堂小练
三
1.有如下程序段:
S=“2022 Hope To Get Out Of The Epidemic”
t=“”
for i in s:
if i<“a” or i>“z”:
t=””
t=i+t
print(t)
该程序运行后,最后显示的内容是( )
A.cimedipE B.cimedip C.cimed D.cime
2.有如下python程序段:
a=input()
t,s=0,0
for c in a[::-1]:
if c.isdigit():
t=t*10+int(c)
else:
s+=t
t=0
print(t)
当输入“123ABC456”时,程序输出结果为:( )
A.321 B.654 C.123 D.975
A
A
小结
四
小 结
字符串的概念与特性
字符串的基本操作
字符串
1.子串判断
2.求子串
3.字符串的连接
1.字符串的概念
2.字符串的特性
①有限序列性
②字符串的可比性
谢谢观看
第1节 字符串
浙教版(2019) 选修一
$$