Python快速入门精讲

Python快速入门精讲
作者: 编者:邹琪鲜
出版社: 清华大学
原售价: 49.00
折扣价: 34.80
折扣购买: Python快速入门精讲
ISBN: 9787302514787

作者简介

邹琪鲜(Milo),13年的编程教学经验,国内最早通过免费视频的方式普及和传播Python的传道者。从2013年起陆续在百度、网易云课堂等平台发布了数百个Python专题视频,包括《疯狂的Python》和《全能的Python:极客编程》等成套的视频课程,全网超过40万人通过作者的视频课程入门并掌握了Python。

内容简介

第3章 搞定字符串 字符串是编程语言中用到最多的数据类型,许多实际问题的处理,最后都变成了字符串的问题。以《英雄无敌》为例,作为一个纯文字的游戏,若想让开场有些气势,运行的过程中更生动有趣,都需要围绕字符串来做文章。其他诸如网络数据传输、传递网址、发微博等,只要跟数据有关的基本都与字符串相关。 例如怎么实现图31所示的互动效果?#号的方框是怎么出来的? 图31互动效果 代码如下。print(\\\\\\\"############################# \\\\\\\") print(\\\\\\\"# welcome to milo's tool box# \\\\\\\") print(\\\\\\\"# 1 : ls # \\\\\\\") print(\\\\\\\"# 2 : free # \\\\\\\") print(\\\\\\\"# 3 : quit # \\\\\\\") print(\\\\\\\"############################# \\\\\\\") 上述代码可以实现图31的效果,但不止于此,关于字符串可以研究的太多了。接下来我们将介绍关于字符串的知识。 3.1字符串的基本定义 字符串定义和操作 字符串是一个序列,程序语言中认为可以打印的字符序列就是字符串。这个序列不一定是一个单词,它可以是一串密码123456、一个网址,甚至是任意的组合,比如abc、一篇完整的博客或者一个程序的所有源代码。 在Python中构建一个字符串,或者定义一个字符串有两种方法。〖1〗〖2〗Python快速入门精讲第3章搞定字符串一种是通过内建函数str()生成, str()实际是类型内置函数,与整数int()一样,用法如下。>>> s = 123 >>> type(s) >>> s + s 246 >>> s = str(s) >>> type(s) >>> s + s '123123' 另一种更常用、也最直接的方法是通过引号定义,单、双引号都可以,只要成对出现就行,用法如下。>>> h = \\\\\\\"hello\\\\\\\" >>> w = 'world' >>> hw = 'hello world\\\\\\\"# 错误用法 Python对字符串的单、双引号没有要求,但实际上双引号用起来会更方便一些,比如 \\\\\\\"let's go\\\\\\\",如果使用单引号则需要对字符串中的单引号做转义处理'let's go'。 3.1.1转义字符 在引号前加 ,可将其后的符号转为普通字符处理,转义字符不会计入字符串,即打印 'let's go'的效果是这样的: >>> print('lets go') let's go 利用转义字符可以实现更多的打印效果,表31为Python中的转义字符。表31转义字符 转义字符描述转义字符描述(在行尾时)续行符反斜杠符号'单引号\\\\\\\"双引号a响铃b退格(Backspace)e转义000空n换行v纵向制表符t横向制表符r回车f换页oyy八进制数,yy代表的字符,例如,o12代表换行xyy十六进制数,yy代表的字符,例如,x0a代表换行other其他字符以普通格式输出有了转义字符就可以打印这样的内容: >>> say = \\\\\\\"tom: \\\\\\\"let's go ! \\\\\\\" njerry:'ok' \\\\\\\" >>> print(say) tom: \\\\\\\"let's go ! \\\\\\\" jerry:'ok' 3.1.2Docstring 通过转义字符可以控制输出的样式,但是并不方便,试想要给一大段文章添加转义字符,那是很辛苦的。幸好在Python中还有一种选择,就是Docstring,三种引号定义字符串。 通过一对三个单引号或者双引号定义字符串,效果即在编码时看到的就是输出效果,而不必再使用转义字符。前面例子的字符串可以这样定义: >>> say = \\\\\\\"\\\\\\\"\\\\\\\"tom: \\\\\\\"let's go!\\\\\\\" jerry:\\\\\\\"ok\\\\\\\" \\\\\\\"\\\\\\\"\\\\\\\" >>> print(say) tom: \\\\\\\"let's go!\\\\\\\" jerry:\\\\\\\"ok\\\\\\\" >>> say 'tom: \\\\\\\"let's go!\\\\\\\"njerry:\\\\\\\"ok\\\\\\\" ' 这里我们在定义字符串时就是按照显示的状态编写的,输出时保持了一样的效果,并没有使用转义字符,但实际在保存时,输入的回车、缩进等都会以转义字符的形式被保存下来。 三引号的好处除了可以让代码看起来更整洁以外,另外一个作用就是在前面讲注释时所提到的作用: 可以通过三引号对程序做注释。 3.1.3原始字符串 通过三引号字符配合可以定义出想要的字符串,不过有时我们希望转义字符被当作普通符号出现而不具备特殊含义,则需要将字符串定义为原始字符串,否则就很麻烦。我们在定义正则表达式时经常使用原始字符串,方法就是在字符串前加字母r,用法如下。>>> s = \\\\\\\"a n b\\\\\\\" >>> print(s) a b >>> s = \\\\\\\"a n b\\\\\\\"# 转义转义字符,多的时候操作不便 >>> print(s) a n b >>> s = r\\\\\\\"a n b\\\\\\\"# 定义原始字符串 >>> print(s) a n b 3.1.4Unicode字符串 字符串中如果含有中文,特别是不同的系统采用不同的中文编码,如果不是Unicode编码,也会比较麻烦,可能需要一次取两个或三个字符才能显示一个中文。所以如果涉及中文,建议将字符串定义为Unicode字符串,只需要在字符串前加U或u,用法如下。>>> hw = u\\\\\\\"你好 hello\\\\\\\" >>> hw[0] '你' 3.2序列 字符串——分片和索引 字符串当中的字符是有序排列且顺序不可变的,其中每个字符对象都可以通过索引单独获取。同样具有这种特性的还有列表和元组,只是对象从字符串变成了更丰富的形式。我们先通过字符串讲解一下序列的特性和基本操作,列表和元组操作方法相同。 3.2.1索引 索引(见图32)可以理解为字符串中每个字符的编号,正序是从左到右,起始数字为0;倒序是从右向左,起始数字为-1。PYTHON012345-6-5-4-3-2-1图32索引获取字符串内元素的方式: 字符串对象后加方括号,方括号内加索引,用法如下。>>> s = \\\\\\\"PYTHON\\\\\\\" >>> s[0] 'P' >>> s[3] 'H' >>> s[- 1] 'N' >>> s[- 6] 'P' >>> s[- 7]# 索引越界 Traceback (most recent call last): File \\\\\\\" \\\\\\\", line 1, in s[- 7] IndexError: string index out of range >>> s[6] Traceback (most recent call last): File \\\\\\\" \\\\\\\", line 1, in # 出错代码位置 s[6] IndexError: string index out of range# 异常类型及提示信息 需要注意的是索引越界问题,超出索引界限就会抛出异常。这是本书讲解中第一次遇到异常,可能在前面的练习中你也遇到过,通常重要信息就是最后一行的异常类型和出错代码位置。通过异常信息,大多数时候我们可以很方便地找到问题所在。 注意: 你可以在开始学习时试着记下这些异常类型,见得多了你就会发现,翻来覆去的就是那几个类型。异常是计算机跟你对话的途径,能够帮你快速发现问题,具体可以看第10章异常处理。 3.2.2切片 切片也叫分片,功能相当强大,用于截取某个范围内的元素,通过[起始值: 结束值]来指定起止区间(左闭右开区间,包含左侧索引值对应的元素,但不包含右侧索引值对应的元素)。这种切片操作很多时候会节省大量的代码,而且很方便,比如从一个长字符串中获取一个单词,用法如下。>>> hw = \\\\\\\"hello world\\\\\\\" >>> hw[0:5] 'hello' >>> hw[:5] 'hello' >>> hw[6:11] 'world' >>> hw[6:] 'world' 上述例子中如果不指定起始值,则切片会取到起始位置;如果不指定结束值,则切片会取到结束位置。若都不指定,你自己试一下: >>> hw[:]# 试一下,自己看结果吧 除了正向切片,负数的反向切片一样可以,上面的例子就变成: >>> hw = \\\\\\\"hello world\\\\\\\" >>> hw[-11:-6] 'hello' >>> hw[:-6] 'hello'>>> hw[-5:-1] # 这个取不到结尾,想想为什么?-1换成0呢? 'worl' 在切片时加入第三个参数,作用是指定步长值,默认是1,即前面的例子中没有指定步长值,步长值就都是1。用法为[起始值: 结束值: 步长值]: 1.超精细讲解+视频+丰富的案例和练习,引导初学者快速入门。 2.注重编程思想的养成,让新手能真正写出代码,而不仅是只能看懂代码。 3.内容丰富,涵盖图形用户界面开发、网络编程、多线程、正则表达式、大数据和机器学习等。 4.全书配套高品质视频和书籍相辅相成,让读者能够更直观的看到作者的演示和讲解。 5.扫描书中二维码即可直接观看配套高品质视频教程,提供全部源代码下载,线上QQ群互动学习,学习形式更多样。