资源简介 3.1 字符串 1课时(教学设计)年级 高二年级 授课时间 1课时课题 3.1 字符串教学 目标 1.通过实际问题,恰当地选择字符串结构,并总结字符串的概念、特性及基本操作。 2.体验用字符串解决问题的基本流程,逐步形成运用字符串结构解决问题的思维方式和学科方法。 3.熟练掌握字符串连接、切片等基本操作。教学 重难点 重点:1.字符串的概念和特性 2.字符串的基本操作 3.字符串的常用函数和方法 难点:字符串连接、切片等基本操作教学 准备 多媒体课件、多媒体教室教学过程教师活动 学生活动新 课 导 入 一、课堂导入 1.展示拥堵的城市交通图,抛出问题:在限行规则下,如何快速获取违章车辆。小组合作、讨论、设计分析违章车辆的算法。 (1)车牌号有什么特点? (2)以哪种方式存储车牌最佳 车牌号是由数字和字母组成的。 大量的有规律数据可以用字符串来存储、处理相应的数据,实现对应的功能。 以生活实际为例,吸引学生参与课堂,抛出问题,让学生思考并观看教师的PPT课件上的图片提示,从而引出本堂课的主题。新 知 讲 授 字符串的概念与特性 1.概念 概念:字符串是由零个或多个字符组成的有限序列。 这些字符来自于某些特定的字符集,它包括大小写英文字母、数字、 标点符号、控制字符等共128个字符。 字符集是多个字符的集合,种类较多。每个字符集包含的字符个数不同。常见的字符集有ASCII字符集、GB2312字符集、GBK字符集、BIG5字符集、GB18030字符集、Unicode字符集等。 字符串中所包含的字符个数称为字符串的长度。 为了区分字符串与其他的标识符,字符串一般用双引号或单引号加以界定,如字符串“Hello World”,它包含11个字符(不包括双引号),其中空格也是一个字符。 在字符串的应用中,会涉及一些特殊的字符串。 ①空串:空串是不包含任何字符的串,其长度为零。 ②空格串:空格串是由空格组成的字符串,其长度为空格字符的个数。 一个字符串中任意个连续的字符序列称为该字符串的子串。例如,字符串S为“HelloWorld”,字符串“H”,“He”,“el”,“ell”,“World”等都是S的子串。串S也是串S的子串。除S本身外,S的其他子串称为S的真子串。 2.特性 (1)有限序列性 字符串是一种线性表结构。 数据元素个数是有限的。 由零个或多个字符组成。 可使用序列切片操作 除第一个和最后一个元素外,其他元素都有一个唯一的前驱和后继,有正索引标号和负索引标号。 字符串“Hello World”的索引标号 (2)可比性 在排序、词频统计、查找文本等操作中,需要对字符串进行比较。 按ASCII码值进行比较 根据编码的方式进行比较 比如字符串“word”与“work”,前3个字符一样,第4个字符“k”的ASCII码值大于字符“d”的ASCII码值,因此字符串“work”大于字符串“word”。当字符串中仅有数字字符时,采用同样的比较方式,如“9”大于“10”。对于含有非ASCII字符集的字符串,需要根据编码的方式进行比较。 (3)探讨与讨论 数组与字符串有哪些区别? ①定义不同:字符数组是用来存储一系列字符的数组。字符串是由一系列字符组成的字符序列。 ②长度不同:字符数组的大小在编译时就必须确定,大小固定不可变。字符串在编译时并没有确定大小,一般通过字符串长度来获取它的长度。 ③元素不同:字符数组的元素是字符类型。字符串的元素是字符类型,并且在使用字符串时,除第一个元素外,其他元素都为'\0'。 ④存储方式不同:字符数组一般通过数组下标的方式访问。 ⑤功能不同:字符数组除了存储字符外,还可以执行一些字符操作。字符串除了存储字符外,还可以进行字符串的一些操作,如拼接、拷贝、截断、连接等操作。 三、 字符串的基本操作 1.字符串的操作 字符串的操作可以实现从字符串中提取子串、将字符串转换成小写或大写、字符串匹配等。 创建 常用单引号()、双引号("")和三个单引号或双引号来创建。 例如:var1 = 'Hello World!' var2 = "Python" (1)子串判断 子串判断用于检查字符串a是否为字符串S的子串。 在Python中,可以用in运算实现,格式为“字符串a in 字符串S”。 当字符串S包含字符串a时,值为True,否则值为False。 Python程序展示 用in运算 (2)求子串 用于从字符串中取出其子串。 在Python中,可以用切片实现。 格式为“字符串[位置i:位置j]”。 S[i:j]表示取字符串S的索引下标i至j–1范围内的子串 S[6:11]为取字符串S中第7个至第11个位置上的字符,得到子串“World”。 使用[]来截取字符串。即:序列的索引和切片操作。 格式为:字符串[start:stop:step],对字符串下标[start,stop)进行步长为step的提取 探讨与讨论: 已知字符串a"人生苦短,我用Python”,则下列说法正确的是( B ) A.a[5]的值为",",a[:5]的值为"人生苦短" B.a[5]的值为"我”,a[:5]的值为"人生苦短" C.a[-5]的值为"y",a[-5:]的值为" thon " D.a[-5]的值为"用",a[-5:]的值为"ython " (3)字符串的连接 用于把两个字符串连接在一起。 在Python中,用“+”号连接符实现。 格式为“字符串S1+字符串S2”。 ①直接拼接 直接将两个字符串常量紧挨着写在一起就可以了。 例如:strname = "abc" "hig"- strname = “abchig” ②若有变量,则需【+】运算符拼接 【+】运算符也能拼接字符串常量 例如:str1=“Python” strname = str1 +“语言” strname = “Python语言” ③Python程序如下 Python中还内置了非常丰富的字符串函数与方法,可以直接调用。 (4)例题 ①例一:回文串 从左往右读和从右往左读都一样的字符串称为回文串,比如“客上天然居,居然天上客”。输入一个字符串,写一个程序,判断该字符串是否为回文串。 根据回文串的特点,只要字符串左右对称,它就是回文串。判断字符串的左右对称时,可以先找到中间位置,采用切片操作,取出字符串的左半部分,存储到字符串变量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所示。请编写程序,输出违章车辆的车牌号码和车主姓名。 部分车辆通行信息表 A.抽象与建模 外地车牌且行驶时间在周一至周五。 本地车牌且车牌数字尾号与限行数字尾号匹配。 B.设计算法 用字符串存储 “车 牌号码”,通过索引、字符串的比较等操作,确定车辆的城市代码。如果是本地车牌,从右往左枚举车牌号码,找 到第一个数字,即为该车牌的数字尾号。再根据限行规则,与“星期”数据逐一比较。 ①用字符串变量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值进行比较,若相等,则车 辆违章,输出车牌号码和车主姓名。 ④若w的值为6或7,则该车辆不违章;否则,车辆违章,输出车牌号码和车主姓名。 ⑤重复①、②、③、④操作,直至所有车辆处理完毕。 C.编写程序 (5)课堂练习 ①有如下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) 则程序执行后,输出的结果为( D ) A.Python B.Python3.8 C.pYTHON D.pYTHON3.8 ②有如下程序段: 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 ) A.cimedipE B.cimedip C.cimed D.cime ③有如下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 ) A.321 B.654 C.123 D.975 四、课堂小结 通过实际问题,恰当地选择字符串结构,并总结字符串的概念。(意图:体现先学后教的理念。) 通过实际问题,恰当地选择字符串结构,并总结字符串的特性。 通过课堂练习,加深同学们对字符串的理解。 通过实际问题,恰当地选择字符串结构,并总结字符串的基本操作。 通过字符串的创建、判断、求子串、连接的讲解,然后再将字符串问题进行抽象化的展示,让学生理解字符串如何解决实际中的问题,体验用字符串解决问题的基本流程,逐步形成运用字符串结构解决问题的思维方式和学科方法。 通过案例讲解:回文串, 体验用字符串解决问题的基本流程,逐步形成运用字符串结构解决问题的思维方式和学科方法。 通过案例讲解:机动车违章识别系统, 体验用字符串解决问题的基本流程,逐步形成运用字符串结构解决问题的思维方式和学科方法。 用练习巩固课堂知识,帮助学生更好地掌握。课 堂 练 习 (有题有答案有解析) 1.字符串是由 或 组成的有限序列。 2.字符串中的字符来自于某些特定的字符集,如ASCII(AmericanStandard Code for Information Interchange,美国信息交换标准码)字符集,它包括 、 、 、 等共 个字符。 3.空串是不包含任何字符的串,其长度为 。 4.空格串是由 组成的字符串,其长度为 的个数。 5.字符串的特性包括: 、 。 6.字符串是一种 ,它的数据元素个数是 的,由零个或多个字符组成。 7.字符串的操作可以实现 、 、 等。 8.字符串的基本操作有 、 、 等。 9.已知字符串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 " 10.下列Python字符串不合法的是:( ) A.”I love ‘China’” B.’I “love” China’ C.’I love \’China\’’ D.’I love ‘China” 11.有如下程序段: 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 12.有如下Python程序段: a=”Beautiful is better than ugly.”.split() b=””.join(a) 则下列说法正确的是:( ) A.a[4]的值为“ugly”,b[4]的值为“t” B.a[4]的值为“ugly.”,b[4]的值为“t” C.a[-4]的值为“is”,b[-4]的值为“u” D.a[-4]的值为“Beautiful”,b[-4]的值为“g” 13.有如下python 程序段: def fun(a,b): n=min(len(a),len(b)) for i in range(n): if a[i]>b[i]: return a elif a[i]len(b): return a else: return b print(fun(“126”,”26”)) 则程序执行后,输出的结果为:( ) A.a B.b C.126 D.26 参考答案: 1.零个、多个字符 2.大小写英文字母、数字、标点符号、控制字符等、128 3.零 4.空格、空格字符 5.有限序列性、可比性 6.线性表结构、有限 7.从字符串中提取子串、将字符串转换成小写或大写、字符串匹配 8.子串判断、求子串、字符串的连接 9.答案:C [解析]a[5]表示字符串中的第6个字符,本题中a[5]为“我”。a[:5]表示取从第一个字符开始到下标为4的字符串,值为“人生苦短,”。AB选项错误。α[—5]表示从右往左数第5个字符,值为“y”。a[—5 :]表示从右往左数第5个字符开始到结束的字符串,值为“gthon”。 10.答案:D [解析]字符串一般采用单引号、双引号或三引号加以界定。当使用单引号时,双引号可以作为字符串中的一部分,反之亦然;也可以使用反斜杠转义符输出单引号或双引号。 11.答案:A [解析]该程序中语句“if i<“a” or i>“z”:;t=“””的功能是字符i为非小写字母时,变量t就清空。因此在“Epidemic”出现前,变量t中的内容为空。这样变量t中最后的内容为“Epidemic”的重新组合。语句t=i+t的功能就是将“Epidemic”进行逆向组合。 12.答案:B [解析]a[4]的值为“ugly.”;b[4]的值为“t”;a[-4]的值为“is”;b[-4]的值为“g”。 13.答案:D [解析]自定义函数fun()的功能是比较字符串a 和b的大小,并返回较大的字符串,因为“126”<“26”,故返回“26”。课 堂 小 结 课堂小结 1.字符串的概念与特性 (1)字符串的概念 (2)字符串的特性 ①有限序列性 ②字符串的可比性 2.字符串的基本操作 (1)子串判断 (2)求子串 (3)字符串的连接作 业 设 计 1.有如下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 2.有如下Python程序段: text=”床前明月光,疑是地上霜。举头望明月,低头思故乡。” text=text.replace(“。”,“,”) ans=[s[0] for s in text.split(“,”) if s] ans=“”.join(ans) 则程序执行后,ans的值为( ) A.“床前明月光” B.“床前明月” C.“床疑举低” D.”举头望明” 3.有如下python程序段: text=“It is too old to learn.” ans=text[:6]+“never”+text[6:] print(ans) 则程序执行后,输出的结果为( ) A.It is too old to learn B.It is never too old to learn C.It is nevertoo old to learn D.It isnever too old to learn 4. 有如下Python程序段: for ch in “I have a dream”: if ch not in”aoeiu”: continue print(ch,end=””) 则程序执行后,输出的结果是( ) A.无输出 B.I have a dream C.I hv drm D.aeaea 5. 有如下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 6. 有如下程序段: s=”” ch=”GaozhouKG2021” n=len(ch) for i in range(1,n,2): c=ch[i] if “A”<=c<=“Z”: c=chr((ord(c)-ord(“A”)+2)%26+65) elif “a”<=c<=“z”: c=chr((ord(c)-ord(“a”)+2)%26+97) else: c=chr(ord(c)+1) s=c+s print(s) 该程序运行后,最后显示的内容为( ) A.IqjwI12 B.21IwjqI C.cbqM33 D.33Mqbc 7.有如下python程序段: a=“110000010111010” if len(a)%4!=0: a=(4-len(a)%4)*“0”+a) s=“0123456789ABCDEF” ans=[] for i in range(0,len(a),4): num=int(a[i:i+4],2) ans.append(s[num]) print(‘’.join(ans)) 已知int()函数用于将一个字符串或数字转换为整型,例如 int(“101”,2)用于将二进制数101转换为十进制数,结果为5,则程序执行后,输出的结果为( ) A.60BA B.C174 C.182E8 D.305D反 思 评 价 本堂课讲解的是理论方面的知识,比较枯燥,只有通过大量的举例来充实课堂。通过列举实例,分析字符串概念和特性,让学生们通过实际问题,恰当地选择字符串结构,并总结字符串的概念、特性及基本操作。体验用字符串解决问题的基本流程,逐步形成运用字符串结构解决问题的思维方式和学科方法。最终能够熟练掌握字符串连接、切片等基本操作。 展开更多...... 收起↑ 资源预览