CT04字符串计算AD455.ppt_第1页
CT04字符串计算AD455.ppt_第2页
CT04字符串计算AD455.ppt_第3页
CT04字符串计算AD455.ppt_第4页
CT04字符串计算AD455.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

字符串计算,文本数据,计算机应用从科学计算转向信息管理. 信息管理中大量的数据都是文本数据. 如姓名,地址,简历等等 小问题:身份证号码,电话号码等是数值? 计算机中用字符串来表示文本数据.,Lu Chaojun, SJTU,2,字符串类型,字符串:字符序列 字符串字面值:用一对引号(单或双)标明. “hello world” !#$%&* “汉字也是字符” 字符串中包含引号怎么办? 包含单引号:串用双引号括住 包含双引号:串用单引号括住 两者都有:更一般的方法是串中用escape字符 print “Alice said, “Hello, Bob”,Lu Chaojun, SJTU,3,字符串的输入,错误输入: str = input(“Enter a string: “) Enter a string: John 原因:input()是把输入当成表达式来计算的! 解决方法: 输入时加上引号 使用raw_input(),Lu Chaojun, SJTU,4,input与raw_input,例:比较 x = input() x = raw_input() “John” John x x x = input() x = raw_input() 3*4+2 3*4+2 x x 可见raw_input()将输入当成字符串数据.,Lu Chaojun, SJTU,5,字符串操作:取字符,字符串是字符序列,可通过位置索引访问每个字符. 对长度为n的字符串,索引可以 是大于0的数:自左向右为0 n1, 或者 是负数:自右向左为1, 2, 3, n 例如:若str = “Hello Bob”,则 str0或str9是H str5或str4是 str8或str1是b str9或str10越界出错,字符串操作:取子串,切段:取一个索引范围内的字符. : 所取子串:位置索引从start end1 start或/和end可省略,缺省值为串的首尾 例如:若str = “Hello Bob”,则 str0:3是Hel str5:9是 Bob str:5即str0:5 str5:即str5,9 str:即str0:9,字符串操作:连接,两字符串的连接 + 例如: “Hello” + “Bob”得到“HelloBob” 一个字符串的重复 例如: 3*“Hi”和“Hi”*3都得到“HiHiHi” 串长度函数len(),编程实例:表查找,在一个数据表里查找目标 def main(): months=“JanFebMarAprMayJunJulAugSepOctNovDec” n = input(“Enter month number (1-12): ”) pos = (n-1)*3 monthAbbr = monthspos:pos+3 print “The month abbreviation is”,monthAbbr+”.” 这是简单查找:利用位置规律来定位. 例如:定长记录文件. 若是月份全称怎么办?,字符串的机内表示,与数值一样,计算机内用二进制数表示每一个字符. 因此操作字符串本质上仍然是数值运算. 表示字符的这个数值称为字符的编码. 这与密码通信的做法是一样的. 问题:计算机采用什么字符集?其中每个字符用什么编码? 对这个问题的不同回答就导致了许多不同的字符编码系统. 例如:字符集只包含AZ,分别用126表示. “8 5 12 12 15”是什么意思?,编码标准,不同计算机若用不同编码体系,则彼此无法沟通. 标准化 ASCII:单字节编码 只用到7位: 0127 96个可打印字符,32个控制字符 利用8位可扩充ASCII: 0255 GB2312:两字节(6763个汉字) GB18030:最多四字节(70244个汉字) Unicode:最多四字节.,字符与编码,求给定字符的编码: ord() ord(a)可得97 求给定编码的字符:chr() chr(97)可得a 可见Python 2.7支持ASCII. 支持中文编码吗? ”你好” print “你好”,编程实例:编码与解码,编码 message=raw_input(“Enter the message to encode: “) for ch in message: print ord(ch), 解码 code = raw_input(“Enter the code of message: “) message = “” for numStr in string.split(code): num = eval(numStr) message = message + chr(num) print “The decoded message is:”,message,字符串库,Python提供的string库包含了很多有用的字符串处理函数 例如split():将字符串拆分成子串 string.split(“Hello string library!”) 返回结果:Hello,string,library! string.split(“32,24,25,57”,”,”) 返回结果:32,24,25,57,字符串库(续),一些常用函数 capitalize(s): 使s首字母大写 capwords(s): 使s的每个单词首字母大写 center(s,width), ljust(s,width), rjust(s,width): 使s变成width宽度且居中/左对齐/右对齐 count(s,sub): sub在s中出现次数 find(s,sub), rfind(s,sub): 在s中找sub的首次/末次出现 join(seq): 将串序列中的串合并成一个串,分隔符默认为空格 lower(s), upper(s): 将串变成小写/大写 lstrip(s), rstrip(s): 删除打头/收尾的空格 replace(s,oldsub,newsub): 在s中用新子串替换旧子串,从编码到密码,字符编码都是工业标准,不是为了保密目的. 密码:为了保密而对信息进行编码. 福尔摩斯探案:跳舞的小人.,明文,密文,加密,解密,数值与字符串的互相转换,eval()函数:将字符串当作数值表达式进行计算. 语法: eval() 例如:eval(“3+4*5”) str()函数:将数值当作字符串 语法: str() 例如:str(3+4*5),字符串的格式化输出,格式化运算符% 语法 % () 语义:模板串中用%标记“空位”,输出时用实际值填入. 例如 print “The price is $%0.2f” % (100),格式描述,空位:格式指示符,描述了填入的值的输出形式. %. 三种类型字符:decimal, float, string 宽度:用多少位置显示数值. 省略或指定为0:根据值的实际长度显示. 宽度超出值的长度时:右对齐显示 宽度前加负号:左对齐. 对浮点数用超长宽度会怎样?试试 精度:指示浮点数值的小数位数. 省略:按系统默认的小数位数显示. print “%f” % (math.pi),编程实例:浮点数如何精确化?,浮点数的机内表示是近似值. 银行应用要求精确表示金额,故不宜用浮点数及浮点运算. 解决办法:以“分”为单位,用整数表示金额. 设金额是x分,输出时利用x/100和x%100分别得到“元”和“角分”. print “You have %d.%02d” % (x/100, x%100) 02d:不足2位用0填充 :语句换行继续,文件处理,文件:存储在磁盘上的数据序列. 典型的文件结构: 基本数据项:可为任何类型 若干数据项构成记录 若干记录构成文件 例如: 学生基本数据项:学号,姓名,年龄 一个学生记录:学号,姓名,年龄 文件:全体学生记录,Lu Chaojun, SJTU,21,文本文件,文件中是文本数据 文本文件可视为存储在磁盘上的字符串. 单行字符串 多行字符串 行尾(EOL):用特殊字符,如新行(newline)字符. Python用n表示新行字符,该字符在显示时被解释成新行字符. 例: print “first linensecond line”,Lu Chaojun, SJTU,22,文件处理:打开文件,打开文件:将磁盘文件与一个程序变量关联,做好读写准备. = open(,) : “r”或“w” 例如 infile = open(“myfile”, “r”) outfile = open(“myfile”, “w”) 写打开时小心文件名!因为可能破坏现有文件,Lu Chaojun, SJTU,23,文件处理:读写文件,读文件:读出文件内容 .read() .readline() .readlines() 点表示法:文件是对象! 写文件:将新内容写入文件. .write() 若想写多行内容,需写入n,Lu Chaojun, SJTU,24,文件处理:关闭文件,关闭文件:取消文件变量与磁盘文件的关联. .close() 关闭文件时,系统会将内存中文件内容输出到磁盘.,Lu Chaojun, SJTU,25,编程实例:批处理,通过文件实现成批数据的输入输出 这种情况不适合用交互方式输入 infile = open(infileName, r) outfile

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论