版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
选择性必修1《数据与数据结构》制作者:邹修鸿第三章字符串、队列和栈3.1字符串的概念、特性及基本操作情境导入垃圾邮件图片信息诈骗图片知识讲解1.字符串的概念字符串是由零个或多个字符组成的有限序列。字符来自某些特定字符集:
ASCII(美国信息交换标准码)字符集(大小写英文字母、数字、标点符号、控制字符等共128个字符)一个字符串中可以包含多种字符集字符。字符串长度:包含的字符个数。字符串一般用双引号或单引号加以界定。s=“HelloWorld”print(“字符串的长度为:”,len(s))>>>字符串的长度为:11#包含11个字符(不包括双引号),其中空格也是一个字符知识讲解1.字符串的概念空串:空格串:子串:不包含任何字符,长度为0由空格组成的字符串,长度为空格的长度任意个连续的字符序列知识讲解-2.字符串的特性(1)有限序列性字符串是一种线性表结构,数据元素个数有限(0个或多个字符)除第一个和最后一个元素外,其他元素都有一个唯一的前驱和后继,可以用元素在字符串中的相对位置作为标号来访问每个元素。在用Python实现的字符串中,有正索引标号和负索引标号,如表所示。【注意】访问索引运算符:“[]”正索引:第一个位置为0负索引:从末端开始编号,第一个位置为“-1”知识讲解-2.字符串的特性(2)字符串的可比性【比较规则】(若字符全来自ASCII字符集)按ASCII码值进行比较,从左至右,依次比较两个字符串中对应位置上字符的ASCII码值。“word”>“work”为True。(ord(“k”)>ord(“d”))“9”>“10”为True。(ord(“9”)>ord(“1”))对于含有非ASCII码字符集的字符串,需要根椐编码的方式讲行比较。*讨论方向:存储内容、存储方式、内容大小比较等问题与讨论数组和字符串有那些相同点和不同点?
比较方向数据结构存储内容存储方式内容大小比较访问元素存储空间不同不同不同相同数组数据元素类型相同一维/二维索引项对应位置索引(正负)-数组名固定不变字符串来自特定字符集(ASCII、GB2312等)享元模式(共同享有同一个对象)从左至右,对应位置(一般标准为ASCII码)索引(正负)有限序列字符串的基本操作求子串字符串的连接常用函数和方法子串判断知识讲解1.子串判断:in函数作用
格式:“字符串ain字符串S”方法1:方法2(无括号):逐个枚举:in函数作用
in函数作用2:逐个枚举2.求子串(切片)格式:字符串[位置i:位置j]s[i:j]表示取字符串S的索引下标i至j-1范围内的子串3.字符串的连接格式:“字符串S1+字符串S2”字符串常用函数和方法函数和方法功能实例len(s)字符串长度x="Hello!"print(len(x))>>>6x.find(y)在x中找y出现的首字母下标(找不到,则输出-1)x="Hello!"y="llo"print(x.find(y))>>>2x.split(str=“”,num=string,count(str))以str分隔符切片x(若指定num,则分割成num个)。切片结果存储在列表中。x="IlikePython"list=x.split()print(list)>>>[‘I’,‘like’,‘Python’]#列表形式x.replace(old,new[,max])将old替换成new,替换不能超过x次x="isisisis"print(x.replace("is","was"))print(x.replace("is","was",3))>>>waswaswaswas
waswaswasisx.upper()小写字母大写字母x.upper()xlower()大写字母小写字母x.lower()返回自主学习:回文字串例1回文串
上联:客上天然居,居然天上客
下联:人过大佛寺,寺佛大过人僧游云隐寺,寺隐云游僧邻居爱我我爱居邻,鱼傍水活水傍鱼。回文特点:字符串左右对称判断方法:
找到中间位置;取出左边,存入left;取出右边right;
若left==right,则为回文串判断方法:
找到中间位置;取出左边,存入left;取出右边right;
若left==right,则为回文串程序测试结果s=input("请输入一个字符串:")length=len(s)#串的长度mid=length//2left=s[0:mid]#取左子串temp=s[-mid:]#取右子串right=""foriinrange(len(temp)):
right=right+temp[len(temp)-i-1]ifleft==right:print("Yes")else:print("No")>>>%Run'!!!!!.py'请输入一个字符串:abcbaYes>>>%Run'!!!!!.py'请输入一个字符串:abbaYes>>>%Run'!!!!!.py'请输入一个字符串:心清可品茶,茶品可清心Yes>>>%Run'!!!!!.py'请输入一个字符串:abcabNo方法1:字符串反转[::-1]程序测试结果s=input("请输入一个字符串:")s1=s[::-1]ifs==s1:print("Yes")else:print("No")>>>%Run'!!!!!.py'请输入一个字符串:abcbaYes>>>%Run'!!!!!.py'请输入一个字符串:abcabNo方法2:当一个字符串中既有大小写字母,又有数字等其他ASCII码字符集字符时,如何统计大写字母、小写字母以及数字字符的个数?问题与讨论s=input("请输入一个字符串:")num=0;min=1;MAX=0;other=0s1="";s2="";s3="";s4=""forcins:if"0"<=c<="9":num+=1s1=s1+celif"a"<=c<="z":min+=1s2=s2+celif"A"<=c<="Z":MAX+=1s3=s3+celse:other+=1s4=s4+cprint("数字有%d个:%s,小写字母有%d个:%s,大写字母有%d个:%s,其他字符有%d个:%s"%(num,s1,min,s2,MAX,s3,other,s4)例2机动车违章识别系统
日期
限行尾号车牌周一周二周三周四周五本地车站牌(某B)1和92和83和74和65和0外地车牌限行限行限行限行限行【注:】限行时间:7:00-9:00、16:00-18:30(工作日)车牌号码车主姓名日期星期某E.X10AB李三2017/1/65某B.CD6AF何一2017/1/91某B.AB09X王立2017/1/101某B.2XAWE杨子2017/1/43某C.XXXX7陈顺2017/1/54某B.XXXX8邵东2017/1/76表3.1.3部分车辆通行信息表只具有下列条件之一,即可判断某车违章:
外地车牌且行驶时间在周一到周五;本地车牌且车牌数字尾号与限行数字尾号匹配。设计算法:
通过索引、字符串比较等,确定车辆城市代码。
如果是本地车牌,则从右往左查找第一个数字(该车牌尾数)
根据限行规定,与“星期”数据比较。读程回答问题:1.以哪种方式存储车牌?2.如何提取车牌中地域属性的字母?3.用字符串相关操作,如何提取数字尾号?4.用数字尾号如何判断是否违章?
程序程序测试结果importcsv#数据读入f=open("车辆号码.csv","r")f_csv=csv.reader(f)k=0forrowinf_csv:#row为行k=k+1ifk==1:#输出文件中的第一行信息print(row[0],"",row[1])continuecar=row[0]#???name=row[1]#???w=row[3]#???week="12345"pos=0forletterincar:#找车牌所在地ifletter>="A"andletter<="Z":ifletter=="B":pos=1#???breakifpos==0andw!=6andw!=7:#外地车牌print(car,"",name)ifpos==1:i=len(car)whilei>=0:i=i-1ch=car[i]ifch>="0"andch<="9":breaknum=int(ch)ifi<0:continueelifnum==0:t=week[4]elifnum<=5:t=week[int(ch)-1]else:t=week[9-int(ch)]ift==w:print(car,"",name)f.close()车牌号码车主姓名某E.X10AB李三某B.ABO9X王立某C.XXXX7陈顺importcsv#数据读入f=open("车辆号码.csv","r")f_csv=csv.reader(f)k=0forrowinf_csv:k=k+1ifk==1:#输出文件中的第一行信息print(row[0],"",row[1])continuecar=row[0]#???name=row[1]#???w=row[3]#???week="12345"
pos=0forletterincar:#找车牌所在地ifletter>="A"andletter<="Z":ifletter=="B":pos=1#???breakifpos==0andw!=6andw!=7:#外地车牌print(car,"",name)ifpos==1:i=len(car)whilei>=0:i=i-1ch=car[i]ifch>="0"andch<="9":breaknum=int(ch)ifi<0:continueelifnum==0:t=week[4]elifnum<=5:t=week[int(ch)-1]else:t=week[9-int(ch)]ift==w:print(car,"",name)isdigit()isnumeric()isdecimal()的区别python内置函数(数字)判断拓展链接正则表达式正则表达式是用一些特定的字符组成的一个“规则字符串"。它可以实现检查一个字符串中是否含有某种子串、将匹配的子串替换或者从字符串中取出符合某个条件的子串等操作。例如,输入一串字符后,查找是否出现过12位数的电话号码(格式:xXXX-XXXXXXXKX,“x”代表一个数字)。不使用正则表达式的Python程序如下:deffindphone(text):foriinrange(0,len(text)):flag=Trueiftext[i].isdecimal()andi<len(text)-12:forjinrange(i+1,i+4):ifnottext[j].isdecimal():#判断是否为数字flag=Falseiftext[i+4]!="-":flag=Falseforjinrange(i+5,i+13):ifnottext[j].isdecimal():flag=Falseifflag:returntext[i:i+13]else:returnFalsex=input("请输入一串字符:")result=findphone(x)ifresult==False:print("没有找到电话号码")else:print("电话号码为:",result)不使用正则表达式!!!拓展链接正则表达式使用正则表达式!!!程序运行结果:请输入一串字符:myphonenumberis话号码为用正则表达式时,可用“\d\d\d\d-\d\d\d\d\d\d\d\d”的规则字符串匹配12位电话号码其中“d”表示一个0到9的数字字符。Python中,所有的正则表达式的函数都在re模块中,使用前,需要导入re模块。Python中的正则表达式通过字符与字符类、量词、组与捕获、断言与标记、条件匹配、标志等规则,以及re模块中的各种方法与函数,能实现文本中的模式匹配、搜索功能、替换、分割等强大的功能。re模块拓展:re模块拓展
实践与体验行程编码行程编码(RunLengthEncoding,简称RLE)是一种利用空间冗余度压缩图像的方法,它的主要技术是在数据图像的编码中寻找连续的重复数值,并用出现次数和颜色编号取代这些连续的值。对于计算机生成的图形或二值图像,行程编码能有效减少存储空间。例如,对于某二值图像的颜色编号,利用行程编码技术可以压缩为:908130实践内容:利用辅助工具“颜色编号.py”,编写“行程编码”程序,得到计算机生成的图形或二值图像的“行程编码”。实践步骤:1.获取某图形或二值图像的颜色编号。①利用“颜色编号.py”提取某图形或二值图像的颜色编号,存入“图像编码.txt”文件中。②利用Python的读取文件功能,从“图像编码.txt”文件中获取颜色编号,用字符串存储。2.设计行程编码的算法。从左往右扫描颜色编号,统计所有相同的颜色段,用颜色的个数和颜色值存储,得到行程编码,并写入“行程编码.txt”文件中。3.根据算法分析,编写程序。结果呈现:?思考与练习天干地支,简称为干支,源自中国远古时代对天象的观测。甲、乙、丙、丁、戊、已、庚、辛、壬、癸称为十天干,子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥称为十二地支。十天干与十二地支按“阳干配阳支,阴干配阴支”两两相配,从甲子到癸亥,形成了六十个基本单位,古人以此作为年的序号,每六十年为一轮,叫“干支纪年法”。从网上查找“干支纪年法”的相关资料,输入公元纪年,输出对应的天干地支。python格式化输出(使用占位符):【选修1作业本】P13%s表示字符串输出,%d表示整数输出,%f表示浮点数输出示例:>>>name="Lucy">>>age=19>>>print('%s的年龄是%d'%(name,age
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省汕尾市(2024年-2025年小学五年级语文)人教版综合练习((上下)学期)试卷及答案
- 2023年大容量注射剂资金申请报告
- 2023年高纯氧化铌、氧化钽资金筹措计划书
- 五年级数学(小数除法)计算题专项练习及答案
- 高二上册政治总复习教案
- 猪场分娩舍培训总结
- 《电气控制系统设计与装调》教案 任务一:M7140型磨床控制线路基本构造及工作原理
- 山东省济宁市金乡县多校2024-2025学年二年级上学期期中语文试卷
- 陕西省神木市2024~2025学年七年级上学期期中质量检测调生物学试题(含答案)
- 湖南省邵阳市邵东市创新高级中学有限公司2024-2025学年高一上学期期中考试地理试题(含答案)
- 田间混凝土道路工程施工方案
- 国开2024《人文英语4》边学边练参考答案
- 华为IPD流程各阶段370个活动详解
- 中考语文复习专题7-口语交际
- 《高速公路沥青路面施工技术规范》
- 八段锦比赛活动方案(一)
- 第二单元大单元教学设计 2023-2024学年统编版高中语文必修上册
- 2023年-2024年《高等教育管理学》考试题库(含答案)
- 商业银行贷款风险提示
- 生涯发展报告
- 工具快换装置配置介绍
评论
0/150
提交评论