您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > Python电子教案3-2-基本数据类型
第3章基本数据类型字符串类型及其操作•字符串是字符的序列表示,可以由一对单引号(')、双引号()或三引号(''')构成,其中,单引号和双引号都可以表示单行字符串,两者作用相同。使用单引号时,双引号可以作为字符串的一部分;使用双引号时,单引号可以作为字符串的一部分。三引号可以表示单行或者多行字符串。三种表示方式如下字符串类型•单引号字符串:'单引号表示,可以使用双引号作为字符串的一部分'•双引号字符串:双引号表示,可以使用'单引号'作为字符串的一部分•三引号字符串:'''三引号表示可以使用双引号字符串类型•打印字符串的Python运行结果如下,注意其中的引号部分:字符串类型•input()函数将用户输入的内容当作一个字符串类型,这是获得用户输入的常用方式。print()函数可以直接打印字符串,这是输出字符串的常用方式。如下例子展示了如何用变量name来存储用户的名字,再输出这个变量的内容:字符串类型•第2.2.4节已经介绍,字符串包括两种序号体系:正向递增序号和反向递减序号。如果字符串长度为L,正向递增需要以最左侧字符序号为0,向右依次递增,最右侧字符序号为L-1;反向递减序号以最右侧字符序号为-1,向左依次递减,最左侧字符序号为-L。这两种索引字符的方法可以在一个表示中使用。字符串类型•Python字符串也提供区间访问方式,采用[N:M]格式,表示字符串中从N到M(不包含M)的子字符串,其中,N和M为字符串的索引序号,可以混合使用正向递增序号和反向递减序号。如果表示中M或者N索引缺失,则表示字符串把开始或结束索引值设为默认值。字符串类型•字符串以Unicode编码存储,因此,字符串的英文字符和中文字符都算作1个字符。观察下面实例:字符串类型•反斜杠字符(\)是一个特殊字符,在字符串中表示“转义”,即该字符与后面相邻的一个字符共同组成了新的含义。例如:\n表示换行、\\表示反斜、\’表示单引号、\”表示双引号、\t表示制表符(TAB)等。例如:字符串类型•Python提供了5个字符串的基本操作符,如表3.10所示。基本的字符串操作符操作符描述x+y连接两个字符串x与yx*n或n*x复制n次字符串xxins如果x是s的子串,返回True,否则返回Falsestr[i]索引,返回第i个字符str[N:M]剪切,返回索引第N到M的子串,其中不包含M•与操作符有关的实例如下:字符串使用实例•程序读入一个表示星期几的数字(1-7),输出对应的星期字符串名称例如:输入3,返回“星期三”。代码如下:•运行结果如下:请输入星期数字(1-7):3星期三微实例3.1:获取星期字符串•微实例3.1通过在字符串中截取适当的子串来实现星期名称的查找。问题的关键在于找出子串的剪切位置。因为每个星期日期的缩写都由3个字符组成,如果知道星期日期字符串的起始位置,就能很容易获得缩写子串。•通过下面语句,可以获得从起始位置pos开始且长度为3的子串:weekAbbrev=weekstr[pos:pos+3]字符串使用实例•使用字符串作为查找表的缺点是,所剪切的子字符串长度必须相同。如果各缩写表示长度不同,还需要其他语句辅助•例如,请读者思考,该如何实现一个“获取月份字符串”呢?要求根据1-12的数字返回月份名称。字符串使用实例•字符串中可以增加特殊的格式化控制字符,用来输出特殊效果。特殊的格式化控制字符使用反斜杠(\)开头,常用控制字符如下:\a:蜂鸣,响铃\b:回退,向后退一格\f:换页\n:换行,光标移动到下行首行\t:水平制表\r:回车,光标移动到本行首行\v:垂直制表\0:NULL,什么都不做特殊的格式化控制字符•Python解释器提供了一些内置函数,详细请参考5.8节。其中,有6个函数与字符串处理相关,如表3.11所示。内置的字符串处理函数函数描述len(x)返回字符串x的长度str(x)返回任意类型x所对应的字符串形式chr(x)返回Unicode编码x对应的单字符ord(x)返回单字符表示的Unicode编码hex(x)返回整数x对应十六进制数的小写形式字符串oct(x)返回整数x对应八进制数的小写形式字符串•len(x)返回字符串x的长度,Python3以Unicode字符为计数基础,因此,字符串中英文字符和中文字符都是1个长度单位•str(x)返回x的字符串形式,其中,x可以是数字类型或其他类型内置的字符串处理函数•每个字符在计算机中可以表示为一个数字,字符串则以数字序列的方式存储在计算机中。目前,计算机系统使用的一个重要编码是ASCII编码,该编码用数字0-127表示计算机键盘上常见的字符以及一些被称为控制代码的特殊值。例如,大写字母A-Z用65-90表示,小写字母a-z用97-122表示。内置的字符串处理函数•chr(x)和ord(x)函数用于在单字符和Unicode编码值之间进行转换。chr(x)函数返回Unicode编码对应的字符,其中,Unicode编码x的取值范围是0到1,114,111(即十六进制数0x10FFFF)。ord(x)函数返回单字符x对应的Unicode编码。如下:内置的字符串处理函数•设想在某些情况下给朋友传递字条信息,但又不希望传递中途被第三方看懂这些信息,因此需要对字条信息进行加密处理。传统加密算法很多,这里介绍一种非常简单的加密算法——凯撒密码。顾名思义,凯撒密码是古罗马凯撒大帝用来对军事情报进行加密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为该字符后面第三个字符,对应关系如下:•原文:ABCDEFGHIJKLMNOPQRSTUVWXYZ•密文:DEFGHIJKLMNOPQRSTUVWXYZABC微实例3.2:恺撒密码•假设用户可能使用的信息仅包括小写字母a-z,则该微实例对应的加密代码如下:微实例3.2:恺撒密码•原文字符P,其密文字符C满足如下条件:•C=(P+3)mod26•解密方法反之,满足:•P=(C–3)mod26微实例3.2:恺撒密码•假设用户可能使用的信息仅包括小写字母a-z,则该微实例对应的加密代码如下:微实例3.2:恺撒密码•微实例运行结果如下:微实例3.2:恺撒密码•在Python解释器内部,所有数据类型都采用面向对象方式实现,封装为一个类。字符串也是一个类,它具有类似a.b()形式的字符串处理函数。在面向对象字典里,这类函数被称为“方法”。字符串类型共包含43个内置方法。鉴于部分内置方法并不常用,限于篇幅,这里仅介绍15个常用的内置方法,如表3.12所示。内置的字符串处理方法内置的字符串处理方法函数描述str.lower()返回字符串str的副本,全部字符小写str.upper()返回字符串str的副本,全部字符大写str.islower()当str所有字符都是小写时,返回True,否则Falsestr.isprintable()当str所有字符都是可打印的,返回True,否则Falsestr.isnumeric()当str所有字符都是字符时,返回True,否则Falsestr.isspace()当str所有字符都是空格,返回True,否则Falsestr.endswith(suffix[,start[,end]])str[start:end]以suffix结尾返回True,否则返回Falsestr.startswith(prefix[,start[,end]])str[start:end]以suffix开始返回True,否则返回Falsestr.split(sep=None,maxsplit=-1)返回一个列表,由str根据sep被分割的部分构成str.count(sub[,start[,end]])返回str[start:end]中sub子串出现的次数内置的字符串处理方法str.replace(old,new[,count])返回字符串str的副本,所有old子串被替换为new,如果count给出,则前count次old出现被替换str.center(width[,fillchar])字符串居中函数,详见函数定义str.strip([chars])返回字符串str的副本,左侧和右侧去掉在chars中列出字符str.zfill(width)返回字符串str的副本,长度为width,不足部分在左侧添0str.format()返回字符串str的一种排版格式,3.6节将详细介绍str.join(iterable)返回一个新字符串,由组合数据类型(见第6章)iterable变量的每个元素组成,元素间用str分割•str.split(sep=None,maxsplit=-1)方法返回一个列表,列表是一种存储多个数据的数据类型,第6.2节将详细介绍,其中,分割str的标识符是sep,默认分隔符为空格。如果给出maxsplit参数,则只分割前maxsplit个字符,默认maxsplit参数可以不给出。•str.center(width[,fillchar])方法返回长度为width的字符串,其中,str处于新字符串中心位置,两侧新增字符采用fillchar填充,当width小于字符串长度时,返回str。内置的字符串处理方法•str.zfill(width)方法返回长度为width的字符串,如果字符串长度不足width时,在左侧添加字符“0”,但如果str最左侧是字符“+“或者”-”,则从第二个字符左侧添加“0”,当width小于字符串长度时,返回str内置的字符串处理方法字符串类型的格式化•为什么会有字符串类型的格式化问题呢?例如,一个程序希望输出如下内容:“2016-12-31:计算机PYTHON的CPU占用率为10%。”•其中,下划线内容可能会变化,需要由特定函数运算结果进行填充,最终形成上述格式字符串作为输出结果。字符串格式化用于解决字符串和变量同时输出时的格式安排。format()方法的基本使用•字符串format()方法的基本使用格式是:•模板字符串.format(逗号分隔的参数)•模板字符串由一系列的槽组成,用来控制修改字符串中嵌入值出现的位置,其基本思想是将format()方法的逗号分隔的参数中的参数按照序号关系替换到模板字符串的槽中。槽用大括号({})表示,如果大括号中没有序号,则按照出现顺序替换format()方法的基本使用•如图3.2所示。如果大括号中指定了使用参数的序号,按照序号对应参数替换,如图3.3所示。调用format()方法后会返回一个新的字符串,参数从0开始编号。format()方法的基本使用format()方法的基本使用•format()方法可以非常方便地连接不同类型的变量或内容,如果需要输出大括号,采用{{表示},}}表示},例如:format()方法的基本使用•format()方法中模板字符串的槽除了包括参数序号,还可以包括格式控制信息。此时,槽的内部样式如下:{参数序号:格式控制标记}•其中,格式控制标记用来控制参数显示时的格式,格式内容如图3.4所示。format()方法的格式控制format()方法的格式控制•格式控制标记包括:填充对齐宽度,.精度类型6个字段,这些字段都是可选的,可以组合使用,这里按照使用方式逐一介绍•填充、对齐和宽度是3个相关字段。•宽度指当前槽的设定输出字符宽度,如果该槽对应的format()参数长度比宽度设定值大,则使用参数实际长度。如果该值的实际位数小于指定宽度,则位数将被默认以空格字符补充。format()方法的格式控制•对齐指参数在宽度内输出时的对齐方式,分别使用、和^三个符号表示左对齐、右对齐和居中对齐。•填充指宽度内除了参数外的字符采用什么方式表示,默认采用空格,可以通过填充更换。format()方法的格式控制format()方法的格式控制•.精度表示两个含义,由小数点(.)开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度format()方法的格
本文标题:Python电子教案3-2-基本数据类型
链接地址:https://www.777doc.com/doc-501980 .html