资源简介 中小学教育资源及组卷应用平台第三单元特殊的线性表项目六探究文本字符的处理——字符串的操作第一课时实现文本字符的编辑 教材分析本节的主要内容是实现文本字符的编辑。以探究文本字符的处理为主线,整个项目分为实现文本字符编辑、实现文本查找、实现文本函数功能三个问题解决。本节课时是从探究电子表格应用中对文本字符进行插入、删除,引出文本字符在计算机中对应于字符串数据,而字符串数据是以种特殊数据类型的线性表形式存储数据的。在这一课时过程中,让学生逐步理解本项目的核心概念“字符串”及字符串应用的基本操作,如删除、插入等,并在活动中让学生利用Python编程实现这些基本操作。通过这一项目学习过程,进一步培养学生的信息意识和计算思维。 教学目标1.理解字符串的概念和特征;2.理解字符串存储的原理和特点;3.理解字符串的删除、插入两种基本操作和作用;4.能设计字符串删除、插入的算法;5.能用Python编写程序,实现字符串删除、插入等操作;6.培养学生的信息意识和计算思维能力。 教学重点1.理解字符串的概念;2.理解字符串的存储结构;3.掌握字符串处理的基本操作; 教学难点1.能编程实现字符串处理的基本操作;2.培养学生的信息意识和计算思维能力。 教学方法体验法、讲授法、讨论法、示例法 教学准备 计算机教室、多媒体设备、多媒体广播软件、教学课件、Python编程环境、学生上机练习的程序文件,预先编制的Python程序文件等。 教学过程一、新课导入电子表格等办公软件能方便地对文本字符进行如插入、删除、查找等编辑和处理(图3-12)。这些文本字符的操作是如何实现的呢?文本字符如学生的姓名、性别等,在计算机世界中对应于字符串数据。字符串是非数值计算问题所要处理的主要对象之一,在文本编辑等方面使用非常广泛。因此,我们有必要了解字符串的概念及其基本操作。二、认识字符串核心概念字符串(string)(简称串):由零个或多个字符组成的有限序列。字符串的长度:字符串中字符的个数。小贴士字符串是特殊的线性表即数据元素只有一个字符的线性表。字符串的插入、删除操作实现与一般的线性表相同。文档中的一个词组、一句话或选中的一段文字就是一个具体的字符串,在计算机中道常记为s=“a1a2a3…an“,其中s是字符串的名,双引号括起来的字符序列称为字符串的值;ai(1≤i≤n)可以是字母、数字或其他字符,n为字符串长度。长度为零的串称为空串。学符串是有限个字符组成的序列,它也是一种线性表,只是线性表中的每个数据元素只能是字符类型,因此称字符串为特殊的线性表。字符串就是字符序列,是数据元素为字符型的线性表。因为字符串的数据元素类型是确定的字符类型,所以大部分程序设计语言都提供了字符串的存储和对字符串操作的丽数,只要直接调用系统提供的字符串操作函数即可实现对字符串的操作。字符串的抽象数据类型表示如下:ADTString:数据对象:D={ailai,∈CharacterSet,i=1,2,…,n,n>=0}数据关系:R={lai-1,ai∈D,i=2,...,n}基本操作:defAssign(self,chars)#生成一个值等于chars的字符串defCopy(self,s)#复制字符串。defCompare(self,s)#比较操作,若大于s则返回1;若等于s则返回0;若小于则返回-1defLength(self)#返回字符串的元素个数,即求长度defConcat(self,s)#连接字符串sdefSubString(self,pos,len)#pos正确,返回第pos个字符起长度为len的子串defIndex(self,s,pos)#返回子串s在字符串中第pos个字符之后第一次出现的位置;若无则返回0defReplace(self,s,t)#用t替换字符串中出现的所有的子串sdefInsert(self,pos,s)#在字符串的第pos个字符位置上插入sdefDeletel(self,pos,len)#删除字符串中第pos位置开始长度为len的子串三、字符串的常用基本操作1.插入操作字符串中任何位置上都可以插入字符串。例如,s=“Cheng,Fei”中第11个位置(下标为10)上插人字符串t=“Adam”,插入后s=“Cheng,FeiAdam”。在s=“Cheng,Fei”中第7个位置(下标为6)上插入宇符串t=“Adam"(末尾须有一个空格),插入后s=“Cheng,AdamFei”。在Python语言中没有直接使用的插入函数,可用截取子串和连接操作实现插入操作。使用数组存储时,算法的基本思想是先将插入位置上的元素依次后移空出空间然后插入元素。2.删除操作删除宇符串中的子串操作。例如,=“ChinaBeijingShanghai”中将第14个位置(下标为13)开始的长度为9的子串删除,删除后s=“ChinaBeijing”。在Python语言中可以用del语句实现删除操作。使用数组存储时,算法的基本思想是将被删结点后面的数据元素依次往前移动覆盖前一结点(有些程序设计语言中字符串数组最后一个元素是结束符)。四、实现文本字符的编辑用户在输入文本字符时,会发生漏输或多输,这时对输入的文本进行编辑修改,如插入或删除字符。使用文档处理软件进行编辑修改的操作很简单,只要定位光标,直接删除和插入即可,那么这些操作对于开发者来说是如何通过编程实现的呢?在输入文本数据时,假设用数组存放一串文本字符,即字符串,实际上就是对数组进行赋值操作,如图3-13所示为存储学生信息表中学生李婷的昵称“Audrey”的数组s(以下都以存储单元加数组下标的形式表示)。该字符串中有6个字符,称其长度的顺序存储若输入时,“Audney”错输成“Audneey”,多输了一个字母“e”,要在“Audneey”中删除这个“e”的过程如图3-14,图3-15所示。图3-14图3-15思考与讨论1.如果插入和删除的是多个字符的字符串,该如何处理?插入或删除多个字符的操作是在插入或删除个字符的基础上重复操作完成的。要确定重复操作次数,须确定字符的个数(字符串的长度)。2.使用链表如何实现字符串的存储和删除?与线性表的链表操作基本相同。五、课堂活动1.尝试写出字符串抽象数据类型的定义。ADTString:数据对象:D={ailai,∈CharacterSet,i=1,2,…,n,n>=0}数据关系:R={lai-1,ai∈D,i=2,...,n}基本操作:defAssign(self,chars)#生成一个值等于chars的字符串defCopy(self,s)#复制字符串。defCompare(self,s)#比较操作,若大于s则返回1;若等于s则返回0;若小于则返回-1defLength(self)#返回字符串的元素个数,即求长度defConcat(self,s)#连接字符串sdefSubString(self,pos,len)#pos正确,返回第pos个字符起长度为len的子串defIndex(self,s,pos)#返回子串s在字符串中第pos个字符之后第一次出现的位置;若无则返回0defReplace(self,s,t)#用t替换字符串中出现的所有的子串sdefInsert(self,pos,s)#在字符串的第pos个字符位置上插入sdefDeletel(self,pos,len)#删除字符串中第pos位置开始长度为len的子串2.画出字符串插入与删除的算法流程图,利学过的数组知识,尝试完成下述代码,理解每一条语句的作用,并上机实践(为了便于理解算法思想,本项目所有活动采用Python列表模拟数组的方式,而不直接采用Python语言的字符串变量及相关操作)。(1)插入程序s=[‘A’,’u’,’n’,’e’,’y’]#定义s列表并赋值n=len(s)#n为s列表长度t=input(“输入要插入的字符串")m=len(t)s.extend(t)#扩大s列表空间J=n-1i=3while(j>=i-1):_____________#元素后移,空出插入字符串的位置_____________forjinrange(0.m):_____________#依次送入元素n=n+mprint(“插入后的字符串为",s)参考答案:s[j+m]=s[j]j=j-1s[j+i-1]=t[j](2)删除程序:s=[‘A',u’,’d’,‘n’,'n’,‘n,'e’,'e’,‘y’]print(s)n=len(s)i=5#位置开始删除m个字符m=3j=i-1+mwhile(j____________#元素前移,覆盖删除部分____________if(i-1+m>n-1):#释放多余的空间dels[i-1:n]else:dels[n-m:n]print(“删除第",”j”位置,长度为”,m,"的数据后:",s)参考答案:s[j-m]=s[j]j=j+121世纪教育网www.21cnjy.com精品试卷·第2页(共2页)HYPERLINK"http://21世纪教育网(www.21cnjy.com)"21世纪教育网(www.21cnjy.com)(共34张PPT)第一课时实现文本字符的编辑信息技术沪教版选择性必修1第三单元特殊的线性表项目六探究文本字符的处理——字符串的操作一、新课导入二、认识字符串三、字符串的常用基本操作四、实现文本字符的编辑五、课堂活动一、新课导入电子表格等办公软件能方便地对文本字符进行如插入、删除、查找等编辑和处理。这些文本字符的操作是如何实现的呢?文本字符如学生的姓名、性别等,在计算机世界中对应于字符串数据。字符串是非数值计算问题所要处理的主要对象之一,在文本编辑等方面使用非常广泛。因此,我们有必要了解字符串的概念及其基本操作。二、认识字符串字符串字符串(string)(简称串):由零个或多个字符组成的有限序列。字符串字符串字符串字符串字符串是特殊的线性表即数据元素只有一个字符的线性表。字符串的插入、删除操作实现与一般的线性表相同。字符串字符串字符串字符串的长度字符串的长度:字符串中字符的个数。字符串字符串字符串字符串的值文档中的一个词组、一句话或选中的一段文字就是一个具体的字符串,在计算机中道常记为s=“a1a2a3…an“,其中s是字符串的名,双引号括起来的字符序列称为字符串的值;字符串的值ai(1≤i≤n)可以是字母、数字或其他字符,n为字符串长度。长度为零的串称为空串。字符串的值学符串是有限个字符组成的序列,它也是一种线性表,只是线性表中的每个数据元素只能是字符类型,因此称字符串为特殊的线性表。字符串就是字符序列,是数据元素为字符型的线性表。因为字符串的数据元素类型是确定的字符类型,所以大部分程序设计语言都提供了字符串的存储和对字符串操作的丽数,只要直接调用系统提供的字符串操作函数即可实现对字符串的操作。字符串的抽象数据类型表示如下ADTString:数据对象:D={ailai,∈CharacterSet,i=1,2,…,n,n>=0}数据关系:R={lai-1,ai∈D,i=2,...,n}基本操作:defAssign(self,chars)#生成一个值等于chars的字符串defCopy(self,s)#复制字符串。defCompare(self,s)#比较操作,若大于s则返回1;若等于s则返回0;若小于则返回-1字符串的抽象数据类型表示如下ADTString:数据对象:D={ailai,∈CharacterSet,i=1,2,…,n,n>=0}数据关系:R={lai-1,ai∈D,i=2,...,n}基本操作:defLength(self)#返回字符串的元素个数,即求长度defConcat(self,s)#连接字符串sdefSubString(self,pos,len)#pos正确,返回第pos个字符起长度为len的子串defIndex(self,s,pos)#返回子串s在字符串中第pos个字符之后第一次出现的位置;若无则返回0字符串的抽象数据类型表示如下ADTString:数据对象:D={ailai,∈CharacterSet,i=1,2,…,n,n>=0}数据关系:R={lai-1,ai∈D,i=2,...,n}基本操作:defReplace(self,s,t)#用t替换字符串中出现的所有的子串sdefInsert(self,pos,s)#在字符串的第pos个字符位置上插入sdefDeletel(self,pos,len)#删除字符串中第pos位置开始长度为len的子串三、字符串的常用基本操作1.插入操作字符串中任何位置上都可以插入字符串。例如,s=“Cheng,Fei”中第11个位置(下标为10)上插人字符串t=“Adam”,插入后s=“Cheng,FeiAdam”。在s=“Cheng,Fei”中第7个位置(下标为6)上插入宇符串t=“Adam"(末尾须有一个空格),插入后s=“Cheng,AdamFei”。2.删除操作删除宇符串中的子串操作。例如,=“ChinaBeijingShanghai”中将第14个位置(下标为13)开始的长度为9的子串删除,删除后s=“ChinaBeijing”。四、实现文本字符的编辑用户在输入文本字符时,会发生漏输或多输,这时对输入的文本进行编辑修改,如插入或删除字符。使用文档处理软件进行编辑修改的操作很简单,只要定位光标,直接删除和插入即可,那么这些操作对于开发者来说是如何通过编程实现的呢?在输入文本数据时,假设用数组存放一串文本字符,即字符串,实际上就是对数组进行赋值操作,如图所示为存储学生信息表中学生李婷的昵称“Audrey”的数组s(以下都以存储单元加数组下标的形式表示)。该字符串中有6个字符,称其长度的顺序存储若输入时,“Audney“错输成“Audneey”,多输了一个字母“e”,要在“Audneey”中删除这个“e”的过程如图所示。思考与讨论如果插入和删除的是多个字符的字符串,该如何处理?思考与讨论插入或删除多个字符的操作是在插入或删除个字符的基础上重复操作完成的。要确定重复操作次数,须确定字符的个数(字符串的长度)。思考与讨论使用链表如何实现字符串的存储和删除?与线性表的链表操作基本相同。五、课堂活动1.尝试写出字符串抽象数据类型的定义。ADTString:数据对象:D={ailai,∈CharacterSet,i=1,2,…,n,n>=0}数据关系:R={lai-1,ai∈D,i=2,...,n}基本操作:defAssign(self,chars)#生成一个值等于chars的字符串defCopy(self,s)#复制字符串。defCompare(self,s)#比较操作,若大于s则返回1;若等于s则返回0;若小于则返回-1defLength(self)#返回字符串的元素个数,即求长度defConcat(self,s)#连接字符串sdefSubString(self,pos,len)#pos正确,返回第pos个字符起长度为len的子串defIndex(self,s,pos)#返回子串s在字符串中第pos个字符之后第一次出现的位置;若无则返回0defReplace(self,s,t)#用t替换字符串中出现的所有的子串sdefInsert(self,pos,s)#在字符串的第pos个字符位置上插入sdefDeletel(self,pos,len)#删除字符串中第pos位置开始长度为len的子串2.画出字符串插入与删除的算法流程图,利学过的数组知识,尝试完成下述代码,理解每一条语句的作用,并上机实践(为了便于理解算法思想,本项目所有活动采用Python列表模拟数组的方式,而不直接采用Python语言的字符串变量及相关操作)。(1)插入程序s=[‘A’,’u’,’n’,’e’,’y’]#定义s列表并赋值n=len(s)#n为s列表长度t=input(“输入要插入的字符串")m=len(t)s.extend(t)#扩大s列表空间j=n-1i=3while(j>=i-1):_____________#元素后移,空出插入字符串的位置_____________forjinrange(0.m):_____________#依次送入元素n=n+mprint(“插入后的字符串为",s)(1)插入程序s=[‘A’,’u’,’n’,’e’,’y’]#定义s列表并赋值n=len(s)#n为s列表长度t=input(“输入要插入的字符串")m=len(t)s.extend(t)#扩大s列表空间j=n-1i=3while(j>=i-1):#元素后移,空出插入字符串的位置forjinrange(0.m):#依次送入元素n=n+mprint(“插入后的字符串为",s)s[j+m]=s[j]j=j-1s[j+i-1]=t[j](2)删除程序:s=[‘A',u’,’d’,‘n’,'n’,‘n,'e’,'e’,‘y’]print(s)n=len(s)i=5#位置开始删除m个字符m=3j=i-1+mwhile(j____________#元素前移,覆盖删除部分____________if(i-1+m>n-1):#释放多余的空间dels[i-1:n]else:dels[n-m:n]print(“删除第",”j”位置,长度为”,m,"的数据后:",s)(2)删除程序:s=[‘A',u’,’d’,‘n’,'n’,‘n,'e’,'e’,‘y’]print(s)n=len(s)i=5#位置开始删除m个字符m=3j=i-1+mwhile(j#元素前移,覆盖删除部分if(i-1+m>n-1):#释放多余的空间dels[i-1:n]else:dels[n-m:n]print(“删除第",”j”位置,长度为”,m,"的数据后:",s)s[j-m]=s[j]j=j+1谢谢21世纪教育网(www.21cnjy.com)中小学教育资源网站有大把高质量资料?一线教师?一线教研员?欢迎加入21世纪教育网教师合作团队!!月薪过万不是梦!!详情请看:https://www.21cnjy.com/help/help_extract.php 展开更多...... 收起↑ 资源列表 项目六(第一课时).doc 项目六(第一课时).pptx