第7课 字符串1——初识字符串-【精彩三年】2024-2025学年高中信息技术选择性必修1课程探究与巩固Word教参(浙教版2019)

2025-08-08
| 26页
| 54人阅读
| 1人下载
教辅
浙江良品图书有限公司
进店逛逛

资源信息

学段 高中
学科 信息技术
教材版本 高中信息技术浙教版选修1 数据与数据结构
年级 高二
章节 3.1 字符串
类型 教案-讲义
知识点 字符串的概念与特性,字符串的基本操作
使用场景 同步教学-新授课
学年 2024-2025
地区(省份) 全国
地区(市) -
地区(区县) -
文件格式 DOCX
文件大小 1.52 MB
发布时间 2025-08-08
更新时间 2025-08-08
作者 浙江良品图书有限公司
品牌系列 精彩三年·高中同步课程探究与巩固
审核时间 2025-07-11
下载链接 https://m.zxxk.com/soft/52989617.html
价格 5.00储值(1储值=1元)
来源 学科网

内容正文:

第三章│字符串、队列和栈 第7课 字符串1——初识字符串(见学生用书P51) ——3.1 字符串,教材P64~73 1.理解字符串的概念和特性。 2.掌握字符串的基本操作,并能编程实现。 1.字符串的概念与特性 (1)字符串的相关概念 ①字符串是由 零个 或多个字符组成的 有限序列 。 ②字符串中所包含的字符个数称为字符串的 长度 。 ③为了区分字符串与其他的标识符,字符串一般采用 单引号 或 双引号 加以界定。 ④一个字符串可以包含多种字符集字符,常见字符集有ASCII字符集、GB2312字符集等。 ⑤特殊的字符串 空串: 不包含 任何字符的串,其长度为 零 。 空格串:是由空格组成的字符串,其长度为 空格字符的个数 。 ⑥一个字符串中任意个连续的字符序列称为该字符串的子串。 (2)字符串的特性 ① 有限序列性 :字符串是一种线性表结构,它的数据元素个数是有限的,由零个或多个字符组成;可以用元素在字符串中的 相对位置 作为标号来访问每个元素。 ②字符串的可比性:如果字符串中的字符全来自ASCII字符集时,则可以按 ASCII码值 进行比较,规则为 从左至右 ,依次比较两个字符串中对应位置上字符的ASCII码值。 2.字符串的基本操作 实际应用中,基本的操作有子串判断、求子串、字符串的连接等。 (1)子串判断:用于检查字符串a是否为字符串S的子串。 ①可以使用in运算实现,格式为“字符串a in字符串S”。当字符串S包含字符串a时,值为True,否则值为False。 ②也可以用in运算,逐个枚举字符串中的字符。 (2)求子串:用于从字符串中取出其子串。在Python中,可以用切片实现,格式为“字符串[位置i:位置j]”。 下标索引:利用方括号[]可以通过索引得到相应位置(下标)上的字符。 (3)字符串的连接:用于把两个字符串连接在一起。在Python中,用“+”号连接符实现,格式为“字符串S1+字符串S2”。 (4)字符串常用函数和方法 函数和方法 功能 len(x) 统计字符串x中字符的个数 x.find(y) 返回字符串x中子串y出现的首字符下标,若找不到,则输出-1 x.split(str=””,mum=string.count(str)) 以str分隔符切片x,如果num有指定值,那么仅分隔num个子串。切片得到的值存储在列表中 x.replace(old,new[,max]) 将字符串x中的旧子串替换成新子串,替换次数不超过max次 x.upper() 把字符串x中的小写字母转换成大写字母 x.lower() 把字符串x中的大写字母转换成小写字母 1. 常见字符表达式 Python表达式 表达式功能 ch>=”a” and ch<=”z” 判断字符 ch 是否是小写字母 ch>=”A” and ch<=”Z” 判断字符 ch 是否是大写字母 ch>=”a” and ch<=”z” or ch >=”A” and ch<=”Z” 判断字符 ch 是否为字母 ch>=”0” and ch<=”9” 判断字符 ch 是否是数字字符 chr(ord(ch)+32) 实现大写字母转小写字母 chr(ord(ch)-32) 实现小写字母转大写字母 Asc(ch)-Asc(”a”)+1 或者 Asc(ch)-96 ch 的值若为小写字母,实现将字符“a”“b”…“z”转换成数值 1、2…26 Asc(ch)-Asc(”A”)+1 或者 Asc(ch)-64 ch 的值若为大写字母,实现将字符“A”“B”…“Z”转换成数值 1、2…26 2.字符串遍历与数据提取 将字符串中的数字进行提取,并进行累加,运行界面如下所示: 实现方法1 实现方法2 s=input() t=”” sum=0 print(”输入数字为: ”) for i in range(len(s)): ch=s[i] if ch>=”0” and ch<=”9”:  t=t+ch else:   sum=sum+int(t)   print(t)   t=”” if t!=””: print(t) sum=sum+int(t) print(”数据之和为: ”+str(sum)) s=input() t=0 sum=0 print(”输入数字为: ”) for i in range(len(s)): ch=s[i] if ch>=”0” and ch<=”9”:  t=t*10+int(ch) else:   sum=sum+t   print(t)   t=0 if t!=0: print(t) sum=sum+t print(”数据之和为: ”+str(sum)) 实现方法3 实现方法4 s=input() t=0 sum=0 print(”输入数字为: ”) for i in range(len(s)): ch=s[i] if ch>=”0” and ch<=”9”:  t=t+1 else:   sum=sum+int(s[i-t:i])   print(s[i-t:i])   t=0 if t!=0: print(s[i-t+1:i+1]) sum=sum+int(s[i-t+1:i+1]) print(”数据之和为: ”+str(sum)) s=input() t=0 sum=0 i=0 print(”输入数字为: ”) while i<len(s): ch=s[i] if ch>=”0” and ch<=”9”: j=i while j<len(s) and s[j]>=”0” and s[j]<=”9”: j=j+1 sum=sum+int(s[i:j]) print(s[i:j]) i=j-1 i=i+1 print(”数据之和为: ”+str(sum)) 3.子串的删除与替换 子串的删除程序:在字符串s1中找全部的字符串s2并删除 s1=input(”字符串s1为: ”) s2=input(”字符串s2为: ”) n1=len(s1) n2=len(s2) i=0 s=”” while i<=n1-n2: ch=s1[i:i+n2] if ch==s2:  i=i+n2 else:   s+=s1[i]   i=i+1 s=s+s1[i:len(s1)] print(”新字符串为: ”+s) 运行结果为: 字符串s1为: abc123dfabc8uyabc7 字符串s2为: abc 新字符串为: 123df8uy7 子串的替换程序:在字符串s1中找全部的字符串s2并替换为字符串s3 s1=input(”字符串s1为: ”) s2=input(”字符串s2为: ”) s3=input(”字符串s3为: ”) n1=len(s1) n2=len(s2) i=0 s=”” while i<=n1-n2: ch=s1[i:i+n2] if ch==s2: s=s+s3 i=i+n2 else:  s+=s1[i]  i=i+1 s=s+s1[i:len(s1)] print(”新字符串为: ”+s) 运行结果为: 字符串s1为: abc123dfabc8uyabc7 字符串s2为: abc 字符串s3为: MKL 新字符串为: MKL123dfMKL8uyMKL7   下列关于字符串的说法中,不正确的是( A ) A.不存在比字符串“1”更短的字符串 B.外卖订单的订单号可以用字符串表示 C.一个字符串可以同时出现不同字符集的字符 D.字符串“Hello”是字符串“HelloWorld”的子串 【解析】 空串也是字符串,其长度为0,字符串“1”的长度为1,所以,长度最短的字符串为空串,选项A错误。 变式1下列关于字符串的说法中,正确的是( B ) A.字符串是一种非线性表结构 B.字符串是由n(n≥0且为整数)个字符组成的有限序列 C.字符串“中国,China”的长度为10 D.已知字符串x="Python",则x[1]表示字符"P" 【解析】 字符串是由0个或多个字符组成的有限序列,是一种线性表结构,索引位置从0开始,选项B正确。   有如下Python程序段: s='Happy-Day-2021!' m=n=k=0 for i in s: if '0'<=i<='9':   m+=1   elif'a'<=i<='z': n+=1   else:   k+=1 print(k) 执行该程序段后,输出的结果是( D ) A.2 B.3 C.4 D.5 【解析】 程序实现对字符串依次遍历,并将数字字符个数累计到变量m中;小写字母字符个数累计到变量n中;其他字符个数累计到变量k,即其他字符有5个。 变式1有如下Python程序段: s='WE12-30ab!cd@';y=” for i in range(len(s)-1,-1,-1): ch=s[i] if '0'<=ch<='9':  y=ch+y elif 'a'<=ch<='z':  y=y+ch print(y) 执行该程序段后,输出的结果是( C ) A.dcba0321 B.dcba0321EW C.1230dcba D.0321abcd 【解析】 程序实现对字符串逆序读取,并将数字字符逆序拼接到变量y中,即“1230”;将小写字母顺序拼接到变量y中,即“dcba”,程序执行后y为“1230dcba”。   有如下Python 程序段: s=input(”请输入要处理的数据: ”) t=0;sum=0 for i in s: if ”0”<=i<=”9”:   t=t*10+int(i) elif ”A”<=i<=”Z”:   sum+=t else:   t=0 print(sum) 若输入的数据为“321AqC56”,则输出的结果是( B ) A.642 B.321 C.698 D.377 【解析】 提取字符串中的数值,并进行累加,其中“321”提取后的结果为321;由于数字串结束后,再出现大写字母,才会累加,但不初始化t的值;如果出现小写字符,则t=0;最后的56之后没有字母,不会累加。 变式12023·余姚中学检测有如下Python程序段: sum=0;c=max=0 s=”i33d40!72” for ch in s: if ch>=”0” and ch<=”9”:   c=c*10+int(ch) else:   if c>max:   max=c c=0 执行该程序段后,max的值为( C ) A.0 B.11 C.40 D.72 【解析】 程序功能为碰到非数字字符时,将前面的数字字符转为数值,并比较最大值。由于字符串并不是以非数字字符结尾,所以72不参与最值的比较。 变式2有如下Python程序段: s='8+9+12+14' sum=0 for i in s: if i=='+': sum+=t else:  t=int(i) print(sum) 执行该程序段后,输出的结果是( B ) A.5 B.19 C.23 D.43 【解析】 遇到“+”后,对变量t进行累加,t中存放“+”左边最近的数字字符转换的数值。故结果为8+9+2=19。   有如下Python程序段: s=input(”请输入字符串: ”) count=0 for i in s: if i>=”0”and i<=”9”: count+=1 print(s[count:count+3]) 若输入的字符串为“AB12CCC222GGBD”,则输出的结果是( C ) A.CCC B.GGBD C.CC2 D.C22 【解析】 程序统计数字字符的个数,输入的字符串中数字字符共有5个,则切片切的位置为5,6,7,选项C正确。 变式1有如下Python程序段: s=”01234” ans=”” for i in s: if i in ”02468”: ans=ans+i else:   ans=i+ans print(ans) 执行该程序段后,输出的结果是( B ) A.10 B.31024 C.42013 D.43210 【解析】 该程序的功能为:遍历字符串s,取出偶数字符顺序累加,取出奇数字符倒序累加,则结果为31024。 变式2有如下Python程序段: s='MoreHasteLessSpeed' mx=” pre=0 for i in range(1,len(s)): if ord(s[i])<97: if mx<s[pre:i]: mx=s[pre:i] pre=i print(mx) 执行该程序段后,输出的结果是( A ) A.More B.Haste C.Less D.Speed 【解析】 循环i从第2个位置开始处理,若ASCII码值小于97,结合字符串s,即当为大写字母时,取出字符串s[pre:i],pre的初值为0,故第一次截取出单词More,第二次截取出Haste,第三次截取出Less,要注意最后一个Way取不到,所以三个单词中的最大值是More。   2022·浙江7月学考有如下Python程序段: p=”Tel-114” c=” ” for ch in p: if ch>=”0” and ch<=”9”: c+=str(9-int(ch)) elif ch>=”a” and ch<=”z”: c+=chr(ord(ch)-ord(”a”)+ord(”A”)) else: c+=ch print(c) 执行该程序段后,输出的结果是( D ) A.tEL-885 B.tEL-114 C.TEL-114 D.TEL-885 【解析】 结合Python程序,实现如下功能:ch为数字字符,那么加密后字符的数值和原数字字符的数值相加和为9;ch为小写字母,那么加密后的字符为原小写字母对应的大写字符;ch为除数字字符和小写字母的其他字符,那么加密后的字符为原ch保持不变;结合需加密字符串为:p='Tel-114',那么按加密规则,程序运行后得到的输出结果为:'TEL-885'。 变式1有如下Python程序段: s=”python” ans=”” for c in s: t1=ord(c)-ord(”a”) t2=chr((t1+2)%26+ord(”a”)) ans=t2+ans print(ans) 执行该程序段后,输出的结果是( D ) A.”python” B.”qrkwbs” C.”ravjqp” D.”pqjvar” 【解析】 程序完成将每个小写字母循环右移两个位置并逆序输出,实际只需知道p变为r并在最右侧,故选项D正确。 变式22023·慈溪中学检测有如下Python 程序段: s=input(”请输入字符串s: ” ) result=”” i=0 while i<len(s)-1: n=(ord(s[i+1])-ord(s[i]))%32 result=result+s[i]+'#'*(n-1) i+=1 result+=s[i] print(result.upper()) #upper() 函数可将字符串中的小写字母转为大写字母 当输入的字符串s 的值为“AbdgHjLn”时,执行该程序段后,输出的字符串为( B ) A.Ab#d##gH#j#L#n B.AB#D##GH#J#L#N B.ab#d#gh#j#l#n D.AB#D#GH#J#L#N 【解析】 后一个字母和前一个字母(不区分大小写)中间相差的字母个数用“#”来代替,最后结果全部转换为大写字母来表示。   有如下Python程序段: S='1B2';ans=0;n=len(s) for i in s: if '0'<=i<='9':  ans=ans*16+int(i) if 'A'<=i<='F': ans=ans*16+ord(i)-55 print(ans) 执行该程序段后,输出的结果是( B ) A.428 B.434 C.439 D.450 【解析】 该程序实现将十六进制数转换为十进制数。1B2=2×1+11×16+1×256=434。 变式1有如下Python 程序段: s=input() n=len(s);ans=”” for i in range((len(s)-1)//4+1): tmp=0 for j in range(4): n-=1 if n>=0: tmp+=int(s[n])*2**j if tmp<10:  ans=str(tmp)+ans else:  ans=chr(tmp+55)+ans print(ans) 若输入的内容为“10110101100”,则输出的结果是( D ) A.45B B.B54 C.CA5 D.5AC 【解析】 外循环将s 分成len(s)//4+1 组数据,从内循环结合n 递减可得将s 从右向左分为4 位一组的二进制。tmp+=int(s[n])*2**j 即将二进制转换为十进制,最后if 语句将十进制转换为十六进制。   统计连续小写字母最长的个数,编写Python程序段如下: s=input() ans=0 for i in range(len(s)): t=s[i] if t>=”a” and t<=”z”: c=c+1 else:    c=0 print(ans) 上述程序段中加框处可选的代码有: ①c=0 ②c=1 ③if c>ans:ans=c ④if c<ans:c=ans ⑤ans=ans+1 下列选项中,代码顺序正确的是( D ) A.②③① B.①④⑤ C.②④② D.①③① 【解析】 c用来统计连续小写字母的个数,c的初值是0,故(1)填:c=0;ans用来统计连续小写字母最长的个数,从前往后遍历字符串s,提取第i个字符放在t中,若c>ans,更新ans的值,故(2)填:if c>ans:ans=c,若第i个字符非小写字母,c清0,重新统计下一个连续小写字母的长度。 变式1小明用Python编写了一个找最大值的程序,程序功能是:用户输入数字串,数据间用逗号分隔,最后以逗号结尾,程序执行后输出最大的数值。程序段如下,横线处填入的代码应为( B ) s=input(”请输入数字串: ”) i=j=max=0 c=t=”” while j<len(s): c=s[j] if c==”,”: t=s[i:j] if int(t)>max: max=int(t) ①         ②       print(max) A.①i=i+1 ②j=j+1 B.①i=j+1 ②j=j+1 C.①j=j+1 ②i=i+1 D.①j=i+1 ②i=i+1 【解析】 找出字符串中连续数字串最大数值;当前位置为”,”,代表一段数字串结束,与原有值比价,如果更大,则更新;其中s[i:j]为数字串切片,j是数字串的后一个位置,i是数字串开始位置;当某一段结束,则更新新一段的开始位置,第1空为i=j+1;第2空为循环变量变化过程,为j=j+1。 |随|堂|检|测| 1.提取字符串“Python”中的相关子串信息,针对提取的子串,下列说法不正确的是( D ) A.可提取的子串中长度最长的子串长度为6 B. "Pon"不是其中的一个子串 C.长度为1的子串共有6个 D.字符串比较时,子串"hon"大于"on" 【解析】 字符串的子串包含字符串本身,因此最长的子串是本身的长度,字符串比较时是依次逐个字符比较,"h"<"o",因此"hon"<"on",选项D错误。 2. 有如下Python 程序段: s=”水果5fRU2IT! ” ans=res=”” for x in s: if ”a”<=x<=”z”: ans=ans+chr(ord(x)-32) elif ”A”<=x<=”Z”: ans=ans+chr(ord(x)+32) elif ”0”<=x<=”9”: res=res+x t=ans+res print(t) 执行该程序段后,输出的结果是( C ) A.5fRU2IT B.5Fru2it C.Fruit52 D.52Fruit 【解析】 将大写字母转换为小写字符;将小写字母转换为大写字母,数字直接连接,其他字符舍去。 3.有如下Python 程序段: x=””;k=0;y=”” s=”394-5-222-60-809” for i in range(len(s)): if ”0”<=s[i]<=”9”:   k+=1 else:   x=s[i-k:i]   if y<x: y=x k=0 print(y) 执行该程序段后,输出的结果是( C ) A.394 B.809 C.60 D.5 【解析】 利用开始位置及结束位置后一位对字符串s进行切片提取数字字符串,并比较大小,找出最大值,其中关键有:else后i指向数字串结束的后一位,k是该数字串的长度;由于809之后没有“-”,不参与运算;“60”>“5”>“384”>“222”。 4.2023·宁波中学检测某数据加密算法的Python程序段如下: s=input(”请输入明文: ”) t=”” for ch in s: if ”a”<=ch<=”z”:  ch=chr(ord(ch)-ord(”a”)+ord(”A”)) elif ”0”<=ch<=”9”: ch=str((int(ch)+7)%10) t=ch+t print(t) 若输入的数据为“pyT638”,则输出的结果是( D ) A.305 B.503 C.PYT305 D.503TYP 【解析】 如果是小写字母则转换为大写字母;如果是数字,则右移7位(约瑟夫环结构),其他符号直接连接。 5.如下Python程序段,可实现输入二进制数转成其十进制结果。则横线处填入的代码为( C ) b=input(”请输入二进制数: ”) b=       d=0 for i in range(len(b)): d+=int(b[i])*2**i print(”十进制结果是: ”,d) A.b[:-1] B.b[-1::1] C.b[::-1] D.b[len(b)-1:0:-1] 【解析】 由语句“d+=int(b[i])*2**i”,i=0指向二进制的最低位,所以需要对字符串b进行反向操作,选项C正确。 6.“不重复数”的特征是任何相邻两个数位上的数字都不相同。如 1101 是重复数,1201 是不重复数。判断某数是否为不重复数的 Python 程序段如下: s=input() i=0;flag=True while i<n-1 and flag: if :   flag=False i=i+1  if : print(”重复数”) else:   print(”不重复数”) 上述程序段中加框处的代码由以下三部分组成: ①flag==False ②n=len(s) ③s[i]==s[i+1] 下列选项中,代码顺序正确的是( A ) A.②③① B.①③② C.②①③ D.③②① 【解析】 循环中,遍历字符串s,提取第i个字符和第i+1个字符,字符串s的长度是n,故(1)填n=len(s);若i个字符和第i+1个字符相同,flag=False,故(2)填s[i]==s[i+1];退出循环时根据flag的值判断是否是重复数,若flag=false,表示是重复数,故(3)填flag==False。 学科网(北京)股份有限公司 $$

资源预览图

第7课 字符串1——初识字符串-【精彩三年】2024-2025学年高中信息技术选择性必修1课程探究与巩固Word教参(浙教版2019)
1
第7课 字符串1——初识字符串-【精彩三年】2024-2025学年高中信息技术选择性必修1课程探究与巩固Word教参(浙教版2019)
2
第7课 字符串1——初识字符串-【精彩三年】2024-2025学年高中信息技术选择性必修1课程探究与巩固Word教参(浙教版2019)
3
所属专辑
相关资源
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。