
本书是面向初学者的Python入门书,强调基础知识,兼顾实践应用。 基础篇介绍Python程序设计的入门知识,共12章,重点包括:Python介绍、安装和运行;Python的基本概念(对象、数据类型、变量、表达式、内置函数);输入和输出;程序设计的基本结构;函数和类;序列操作(列表、元组、集合、字典);字符串;正则表达式;文件读写;目录与文件操作;常用标准库。排错篇总结初学者常遇到的错误并介绍程序调试方法,包含2章:Python错误类型、Python代码调试。 本书为读者提供完整的教学资料包。作为学习的完整架构,与本书内容相关的文本篇和应用篇以电子出版物形式出版。 本书适合作为高等院校文科类各专业学生学习Python和大数据应用的教材,也可供相关从业人员学习参考。
序一 中国传媒大学胡凤国老师著作的《Python程序设计(基于计算思维和新文科建设)》一书介绍了Python程序设计与数据思维的知识,深入浅出,适合初学者循序渐进地学习,可培养自己数据思维的能力。 本书特别适合文科生学习,使得文科生也可以步入程序设计的大门,参与建设“新文科”的伟大工程。这是一件很好的事情。 我自己本来也是一个文科生,在北京大学中文系语言专业读过本科和研究生,但是一直关注着计算机科学的发展,并试图把计算机技术应用到人文科学中,先后研制了汉语到法语、英语、日语、俄语、德语的多语言机器翻译系统和外语到汉语的若干机器翻译系统,还研制了世界上第一个汉语的术语数据库。2018年,中国计算机学会授予我NLPCC杰出贡献奖,以表彰我在自然语言处理(Natural Language Processing,NLP)和中文计算(Chinese Computing,CC)等跨学科领域中做出的成绩。我由一个文科学者成为了一个计算机自然语言处理的研究人员,成为了“新文科”的践行者。我的亲身经历足以说明文科生也是可以学会程序设计的。 1946年,美国宾夕法尼亚大学的莫克利(John W. Mauchly)和艾克特(J. Presper Eckert)研制了世界上第一台电子计算机ENIAC,由大量的电子管组成,以电子管作为元器件,所以又被称为电子管计算机。ENIAC是个庞然大物,用了18000个电子管,占地150,足有两间房子大,重达30吨,耗电功率约150kW,每秒可进行5000次运算;由于使用的电子管体积很大,耗电量大,容易发热,因而工作的时间不能太长;使用机器语言(Machine Language)来编写程序,没有系统软件;采用磁鼓、小磁芯作为储存器,存储空间有限;输入和输出设备都很简单,没有键盘,采用穿孔纸带或卡片来记录数据;主要用于科学计算,当时美国国防部用它来进行弹道计算。这是第一代计算机,操作复杂,普通的文科生是难以掌握的。在机器翻译领域,需要计算机专家与语言学家两方合作才能开展工作。 第二代计算机采用的主要元件是晶体管,称为晶体管计算机。计算机软件有了较大发展,开始使用汇编语言(Assembly Language)来编写程序,后来出现了Algol 60、Fortran、Cobol这样的计算机高级语言(High-level Language),采用了监控程序,成为操作系统的雏形。这种晶体管计算机体积小,可靠性增强,寿命延长,运算速度快,提高了操作系统的适应性,存储容量提高,应用领域扩大。在某些人文科学部门开始使用第二代计算机来进行文献的信息检索,在语言学领域,机器翻译进一步发展,出现了一批兼通计算机和语言学的跨学科研究人员。 1965年出现了第三代计算机,这是中小规模集成电路计算机。这种计算机使用中小规模的集成电路,可在几平方毫米的单晶硅片上集成十几个甚至上百个电子元件,体积比晶体管计算机更小,耗电更少,运行计算速度更快,外围设备多样化,有完善的操作系统和应用程序,用于编写程序的高级语言有了进一步发展,应用范围扩大到了企业管理和辅助设计等领域。第三代计算机在人文科学中的应用范围逐渐扩大,自然语言处理在语言学领域越来越受到关注,成为了现代语言学研究的一个重要部门。 1971年以来出现了第四代计算机,也就是大规模集成电路计算机,采用大规模和超大规模集成电路逻辑元件,体积比第三代计算机进一步缩小,可靠性更高,寿命更长;运算速度更快,每秒可达几千万次到几十亿次;系统软件和应用软件获得了巨大的发展,软件配置丰富,程序设计部分自动化;开始使用计算机网络技术、多媒体技术、分布式处理技术,微型计算机大量进入家庭,产品更新速度加快。这种微型计算机在办公自动化、数据库管理、图像处理、语音识别、语音合成、自然语言处理和专家系统等各个领域得到了广泛应用,电子商务已开始进入家庭,出现了个人计算机(Personal Computer,PC)和可以随身携带的笔记本计算机(Notebook Computer),人人都有了使用计算机的机会,计算机的发展进入了一个新的历史时期。 随着互联网的发展,信息技术普及到千家万户,在现代化的生活中,几乎每个人都离不开计算机,人类社会进入了信息化、网络化和智能化的新时代。人文科学领域普遍采用计算机技术,自然语言处理的重要性越加明显,自然语言理解成为了人工智能皇冠上的明珠。 早期的第一代计算机采用机器语言来编写程序,这样的机器语言使用代码来描述计算机结构和操作的各种细节,只有熟悉计算机的专业人员才有可能使用这样的机器代码。后来出现的汇编语言使用宏指令(Macro Instruction)来描述计算机的操作,不再关注计算机结构和操作的细节,编写程序就变得比较容易了。20世纪60年代出现了计算机高级语言,这样的程序语言独立于计算机的结构和操作系统,其概念和结构便于人们进行推理,其表达方式与自然语言的表达方式比较接近,会说自然语言的人很容易掌握,这样,编写程序的工作变得更加容易。高级语言的发展为计算机在人文科学中的应用创造了有利的条件。Python就是一种这样的高级语言。据说这种高级语言的创建人、荷兰计算机专家吉多·范罗苏姆(Guido van Rossum)非常喜欢一个叫作蒙提·派森(Monty Python)的喜剧团体,因而使用了这个剧团的名字Python来命名他在1991年创建的高级语言。Python有多个版本,本书主要是使用Python 3.6.5版本写成的。 Python是一种跨平台的、开源的、免费的、解释型的、动态的高级编程语言,相对于机器语言和汇编语言等低级语言来说,更接近人类的自然语言。与其他高级语言相比,Python具有更多的优点:语法简单易学,代码简洁明了;扩展库丰富,便于执行不同的任务;同时支持脚本式编程和交互式编程,对于学习者更有亲和力;既可以支持面向对象的程序设计,又可以面向过程编写和运行程序代码,初学者一旦入门便可以登堂入室。因此,Python一直受到欢迎。由于Python 具有这些优点,学起来比较容易,特别适合初学者学习使用。 本书是胡凤国老师专门为初学者编写的,他已经在中国传媒大学讲授计算机课程多年,在编写此书时充分考虑到了初学者学习过程的特殊性。 本书具有如下优点。 第一,覆盖全面。本书全面介绍了Python的数值、变量、表达式、内置函数与对象,数据的输出和输入,程序设计的基本结构,函数和类,序列操作,字符串,正则表达式,文件读写,目录与文件操作,常用标准库,字符集,文本编码,汉字读写,文本文件操作,图片文件操作,常见错误和排错方法。初学者可对Python获得全面而系统的了解。 第二,循序渐进。本书分为基础篇、文本篇、应用篇、排错篇,首先系统论述Python的基础知识,然后介绍文本处理和Python的各种应用,最后讲解在使用Python中容易出现的错误及其纠正方法,由浅入深,循序渐进。 第三,实践性强。本书通过大量的实例来讲解Python的原理和应用,并精心编制了几百个例题,让初学者通过实例和各种各样的例题来理解本书的内容,具有很强的实践性。 第四,内容生动。本书使用了很多生动有趣的事例来帮助读者理解程序设计的原理,如鸡兔同笼、年份生肖计算、天干地支配对、黑洞数判断、哥德巴赫猜想、孪生素数等,有助于提高初学者的兴趣。 Python是一种实践性很强的高级程序语言,本书非常适合初学者作为入门的向导,希望读者按照本书的顺序,由浅入深、循序渐进地学习,培养自己的数据思维能力,使自己成为文理兼通、博学多才的一代新人。 冯志伟 2021年5月 ? 序二 Python是一门免费、开源的跨平台高级动态程序设计语言,支持命令式编程、函数式编程模式,以及面向对象程序设计,拥有大量功能强大的内置对象、标准库、涉及各领域的扩展库,使得各领域的工程师、科研人员、策划人员、管理人员能够快速实现和验证自己的思路、创意或推测。经过30多年的发展,目前Python语言的应用已经渗透到数据采集、数据分析、数据可视化、移动终端开发、科学计算、密码学、系统安全、逆向工程、软件测试与软件分析、电子取证、系统运维、图形图像处理、音乐编程、影视特效制作、机器学习、深度学习、人工智能、自然语言处理、游戏设计与策划、网站开发、计算机辅助教育、医药辅助设计、神经科学与心理学、电子电路设计、树莓派等几乎所有专业和领域。 尽管Python语言向来以易学、易用著称,但实际上真想学好、用好并不容易。要想写出来的程序有Python语言的味道和感觉,别人阅读时赏心悦目,不可能一蹴而就,需要多看、多练、多想、多交流。 多看。读书破万卷,下笔如有神。写作如此,写程序也是如此,不仅要多看书,还要看Python社区的大量优秀代码,并且要看很多遍,领会每个案例的要点。 多练。太极拳论曰:“由招熟而渐悟懂劲,由懂劲而阶及神明,然非用力之久,不能豁然贯通焉。”陆游的教子诗《冬夜读书示子聿》也认为“纸上得来终觉浅,绝知此事要躬行”。切忌只看不练,很多人眼高手低,一看就会,一写就错,根本原因还是练的太少了。子曰:“学而时习之,不亦说乎?”说的也是这个道理,充分说明了练习的重要性。 多想。学而不思则罔,思而不学则殆。一味地看书和埋头苦练是不行的,还要多想、多总结、多整理,经常问自己“作者通过这个案例想告诉我们什么?”“通过这个案例我学到了什么?”“这个案例的代码还有没有其他的写法?”“这几个案例的知识点综合到一起还能解决什么问题?” 多交流。独学而无友,则孤陋而寡闻。除了自己努力和思考,还要多交流。除了Python官方网站和在线帮助文档,建议经常浏览一些Python论坛并阅读和调试其中的优秀代码,汲取他人代码中的精华。子曰:“三人行必有我师焉,择其善者而从之。”也是相同的道理。 汝果欲学诗,工夫在诗外。没有丰富的人生阅历很难写出优美并且有内涵、有灵魂的诗,学习Python也是这样。Python也好,其他编程语言也罢,归根到底都是用来表达我们的思想、算法或帮我们解决某个问题的语言和工具而已,不要神化Python,idea才是一个程序的灵魂。切不可把全部精力放到Python语言的语法学习上,而是把主要精力放到自己的专业知识学习上,然后用Python把自己的思想或算法准确地表达出来。 我与好友老胡相识于1998年,当时正读大学三年级,虽然我们不是一个专业,但我们对编程的热爱却惊人的一致,每天沉迷于代码的奇妙世界。相识之初就惊叹于数学专业出身的老胡还具有深厚的文学功底。集数学、文学、编码于一身又乐于分享和助人的老胡一直是众多同学和校友中的焦点。他的执行力和动手能力都非常强,非常喜欢钻研且涉猎广泛,遇到问题立即搜索大量资料,从多个角度分析问题,不搞明白不罢休,老胡多年来所取得的一系列成果与这样的优秀品质和行事风格是密不可分的。今闻老胡大作即将出版,很高兴Python大家庭又增添一本好书,通读全稿之后,现郑重推荐给广大Python爱好者,希望更多人能够从本书中受益。 董付国 2021年6月 ? 自 序 诗曰: 欲写派森细测查, 至今三见六一八。 恰如母鸡惜下蛋, 唯恐人说味道差。 话说北漂文士胡某写Python之书进展缓缓,三年乃成,终于在2021年剁手节这一天完成定稿。即将付梓之际,诚惶诚恐,未知成色如何,静待各位看官评判。 笔者用了一年的时间把本书写成了“胡凤国编著”,又用了两年才把“编”字去掉。自忖还算用心,希望本书能为读者朋友学习Python带来些许帮助。 在大数据时代,学习一门编程语言,掌握程序设计技能和数据处理的方法,对于培养数据思维是非常重要的。无论是理科生还是文科生,都需要掌握一门编程语言。在众多的编程语言中,Python脱颖而出。对于初学编程者尤其是文科初学者来说,Python有着强大的功能、简洁的语法、友好的交互和众多的库包,这些特点使得它成为学习程序设计的优秀入门语言。 笔者从2003年开始为中国传媒大学语言学专业的本科生开设程序设计课程,最开始使用的教学语言是C,后来改成了Python。学生们学完一个学期都很难用C语言写出一个生成Excel文件的程序,但是用Python语言编写一个生成Excel文件的程序,学生们只需要学习一节课就能初步胜任。笔者曾用词频统计实验来对比自己编写的C语言程序和Python语言程序。在没有刻意进行代码优化的情况下,要求两个程序生成完全一致的结果,使用C语言写了大约250行代码,用时一个上午;而使用Python只写了10行代码,用时10分钟。关键是Python程序的运行速度居然不比C语言慢多少。就这个任务而言,Python完胜。这个实验直接导致了笔者的教学语言从C转向Python。 这个转向并不是说Python就比C语言优越,只不过对于文科初学者而言,Python比C语言更合适入门而已。理论上,学习程序设计可以采用任何程序设计语言。因为我们不是为了学习某种程序设计语言本身,而是为了学习思考问题和解决问题的思路,为了学习一种思维方式。所以,我们不能为了学Python而学Python,而应该通过学习Python掌握分析问题和解决问题的思路。在知识结构的安排上,本书尽力呈现给大家同一个任务的多种解法,目的就在于培养读者多角度思考问题的习惯。 读者朋友在入门Python之后,如果对提高程序设计技能感兴趣,可以进一步学一学算法,学一学数据结构,以便提高分析问题和解决问题的能力。学习了算法和数据结构,就好比工程师的手中有了一把趁手的锤子,然后看什么都像是钉子,总会想着如何更好地去锤钉子。有了“锤钉子”思维,我们将会昂首阔步地走在程序设计的大路上,意气风发、斗志昂扬。 致力于解决实际问题的读者朋友可以多多考察各种扩展库。Python借助众多的库包可以轻松完成很多任务,可以说只有想不到,没有做不到。我们广泛考察各种扩展库的作用和性能,以便在面对实际需求时能够迅速找出合适的库包来调用。虽然当一个“调库侠”会影响程序设计技能的提高,但是我们大多数人学习Python并不一定要当“程序猿”和“程序媛”,我们的目的是利用Python多快好省地提高工作效率。所以,在初步掌握Python程序设计技能的基础上,调(diào)包、调(tiáo)参数就成了大多数人不约而同的选择,因为这样能大大提高程序开发效率。迅速写好代码,让Python程序慢悠悠地替我们工作,然后我们去做自己喜欢的事情,岂不是美事一桩?人生苦短,我用Python。 本书面向的对象是Python的初学者。不管是单位的工作人员还是学校的学生,不管是小学生、中学生还是大学生,不管是大学文科生还是理科生,都可以通过本书来学习Python。本书配套有教学PPT和全部例题、绝大部分思考题的程序代码,学校教师可以选用本书作为Python的入门教材,培训机构可以使用本书来开展培训。 本书安排了四部分内容:基础篇、文本篇、应用篇和排错篇。基础篇讲述Python程序设计的入门知识;文本篇介绍字符、编码和文本处理的基础知识;应用篇介绍日常办公文件的处理;排错篇总结初学者常遇到的错误和程序调试方法。 在所有关于文本处理的书中,本书的Python入门知识应该是相当详细的;在所有介绍Python入门的书中,本书的字符、编码、文本处理知识应该是相当全面的;在所有同时具备Python入门和文本处理知识的书中,本书的办公文件处理知识应该是相当具系统性的。本书的错误分类和代码调试方法也是笔者精心准备的。书中安排了大量的交叉引用,通过“×节”和“例×”这样的叙述,把前前后后的诸多知识点联系在一起。 如果把四方面的知识单独拿出来,毫无疑问会有很多优秀的著作超过本书,但把这四方面的知识综合起来的入门著作尚不多见。经过三年的写作,笔者终于有机会捧出这样的一本教材呈现在大家的面前。 限于书本篇幅和笔者自身能力,本书还有很多知识点没有介绍,比如线程与进程、网络与爬虫、多媒体处理、数据库操作、大数据分析,等等。笔者只希望能把自己熟悉的知识介绍明白,倘若本书能有部分内容对大家学习Python有所帮助,笔者将不胜欣慰。 本书能够出版,需要感谢很多人。感谢冯志伟先生!几年来,冯先生一直在鼓励和支持我写一部面向大学文科生的程序设计图书,并提出了很多宝贵的建议。感谢山东工商学院的董付国老师!笔者最初接触Python就是在董老师的建议下开始的,在笔者学Python、教Python和写Python的过程中,得到了董老师的大力支持和无私帮助。感谢电子工业出版社的章海涛编辑!由于他的大力支持和耐心包容,这部姗姗来迟的图书才得以出版,在他的建议下,本书从面向文科生调整成了面向所有的Python学习者。感谢国防科技大学的刘万伟老师、武汉理工大学的赵广辉老师、安徽大学的段震老师及“Python技术交流教师群”的各位老师,老师们的直接帮助及在微信群中的讨论使我受益匪浅。感谢中国传媒大学选修过《程序设计与语言信息处理》课程和《面向自然语言处理的Python程序设计》课程的同学们,在教学相长的互动过程中,同学们的反馈加深了我对Python知识的理解和掌握。感谢本书写作过程中所参考的书籍和网贴的作者!他们的成果让我在学习Python时少走了很多弯路,少踩了很多坑。感谢我的妻儿对我写作的支持和对我以写书稿为借口不做家务的偷懒行为的宽容! 感谢选择本书的读者朋友。希望我学习Python的心得体会能对大家有所帮助。若本书有什么疏漏和不足,请不吝赐教,真诚期待您的反馈:cuchufengguo@163.com。如果您觉得本书不错,也请不吝赞美,以便让更多的Python学习者通过本书受益。 承蒙冯志伟先生和董付国老师在百忙之中为本书作序,甚为感激。冯先生是文理兼通、学贯中西的语言学家,中国第一个一对多汉外机器翻译系统的设计者,2018年中国计算机学会NLPCC杰出贡献奖获得者,在语言学界享有崇高的威望。董付国老师是全国高等院校计算机基础教育研究会“教育信息化”专业委员会委员,山东省一流本科课程“Python应用开发”负责人,华为技术有限公司独立顾问,数十本Python畅销书的作者,在Python界有着很强的影响力。两位专家对本书的肯定和推荐,是对笔者的极大鼓舞,笔者不胜荣幸。 亲,给个好评呗! 胡凤国 2021年6月18日于京东定福庄 ? 前 言 本书是面向初学者的Python入门书,强调基础知识,兼顾实践应用,总体架构上分为基础篇、排错篇、文本篇和应用篇四部分。 特别说明,由于作为教材,篇辐受限,基础篇和排错篇以纸质图书出版,文本篇和应用篇以电子出版物形式出版(有需要者,请单独购买)。 基础篇介绍Python程序设计的入门知识,共12章,重点包括:Python介绍;安装和运行;Python的基本概念(对象、数据类型、变量、表达式、内置函数);输入输出;程序设计的基本结构;函数和类;序列操作(列表、元组、集合、字典);字符串;正则表达式;文件读写;目录与文件操作;常用标准库介绍。建议第1~11章按章节顺序学习,第12章对前面各章用到的标准库进行了总结和拓展,可以在学习前面章节时随时参考。 排错篇总结初学者常遇到的错误并介绍了程序调试方法,包含2章:Python错误类型、Python代码调试。建议按顺序学习,先了解错误类型有助于代码调试。 配套电子出版物中包括文本篇和应用篇,可以作为本书的进阶学习资料。 文本篇介绍字符、编码和文本处理的基础知识,共4章,重点包括:字符集;文本编码;《通用规范汉字表》介绍;操作文本文件。建议先按顺序学习前两章,再根据需要学习后两章,后两章没有顺序要求。 应用篇介绍日常办公文件的处理,包含5章:Word文件操作,Excel文件操作,PowerPoint文件操作,PDF文件操作,图操作。这5章没有顺序要求,可以根据需要选学。 读者学习基础篇后,可以根据需要,自行学习文本篇或应用篇。文本篇和应用篇是相对独立的,没有严格的学习顺序要求。本书基础篇和文本篇的绝大部分章节中都有思考题,读者在学习时可以编程实现,如果运行程序遇到错误,可以随时参考排错篇。 本书提供了全部编号例题的程序代码,以及教学PPT和绝大部分思考题的参考代码,读者可以在http://www.hxedu.com.cn搜索本书,下载配套资源。也欢迎大家关注微信公众号“语和言”,本书尚未深入介绍或尚未涉及的一些Python知识点会在该公众号中不定期更新,作为本书的另一种配套资源。 作 者
目 录 第一篇 基础篇 第1章 Python介绍 2 1.1 什么是Python 2 1.1.1 有一种编程语言叫Python 2 1.1.2 Python的发展史 3 1.1.3 Python的版本选择 3 1.2 为什么要学习Python 5 1.2.1 为什么要学编程 5 1.2.2 学编程为什么选Python 6 1.3 怎样学习Python 7 第2章 Python的安装和运行 9 2.1 安装Python软件 9 2.1.1 软件下载 9 2.1.2 安装 11 2.1.3 测试 15 2.2 运行Python代码 19 2.2.1 交互式运行 19 2.2.2 脚本式运行 21 2.2.3 命令行运行 23 2.2.4 扩展式运行 25 2.2.5 运行Python代码的误区 25 2.2.6 合法的Python语句 25 2.3 Python代码书写规范 28 2.4 Python扩展库和标准库 32 2.4.1 扩展库的安装 32 2.4.2 标准库和扩展库的使用 37 第3章 Python的基本概念 40 3.1 数据和数据类型 40 3.1.1 数据与对象 40 3.1.2 数据类型 41 3.2 变量与关键字 52 3.2.1 对象的存储 52 3.2.2 变量 52 3.2.3 关键字 56 3.3 运算符和表达式 57 3.3.1 常量数据和变量数据 57 3.3.2 运算符 57 3.3.3 表达式 70 3.4 内置函数和内置对象 72 3.4.1 内置函数 72 3.4.2 内置对象 81 思考题 86 第4章 输入和输出 87 4.1 数据输入 87 4.1.1 获取输入数据 87 4.1.2 转换输入数据 87 4.1.3 处理输入错误 89 4.2 数据输出 91 4.2.1 最简单的数据输出 92 4.2.2 数据格式化 98 4.3 综合举例 103 4.3.1 十进制转二进制(一) 103 4.3.2 鸡兔同笼(一) 103 4.3.3 韩信点兵(一) 104 4.3.4 换酒问题(一) 104 4.3.5 最大公约数(一) 105 4.3.6 交换两个变量的值 106 思考题 106 第5章 基本程序结构 109 5.1 结构化程序设计 109 5.1.1 顺序结构 109 5.1.2 选择结构 110 5.1.3 循环结构 110 5.1.4 结构嵌套 111 5.2 顺序结构 112 5.2.1 顺序结构举例 113 5.2.2 顺序结构的拼接 113 5.3 选择结构 114 5.3.1 单分支选择结构 115 5.3.2 双分支选择结构 115 5.3.3 多分支选择结构 116 5.3.4 选择结构的嵌套 118 5.3.5 条件表达式 120 5.3.6 选择结构的多样性 121 5.4 循环结构 123 5.4.1 while循环 123 5.4.2 for 循环 125 5.4.3 continue语句 126 5.4.4 break语句 127 5.4.5 循环结构中的else子句 127 5.5 循环结构的嵌套 129 5.6 综合举例 130 5.6.1 十进制转二进制(二) 130 5.6.2 鸡兔同笼(二) 131 5.6.3 韩信点兵(二) 132 5.6.4 换酒问题(二) 132 5.6.5 最大公约数(二) 132 5.6.6 百钱百鸡 135 5.6.7 兔子数列 135 5.6.8 奇数幻方 136 5.6.9 哥德巴赫猜想(一) 138 5.6.10 信息加密(一) 139 5.6.11 求圆周率 139 5.6.12 海龟画图 142 思考题 152 第6章 函数和类 159 6.1 使用函数的好处 159 6.2 函数的定义和调用 160 6.2.1 函数的定义 160 6.2.2 函数的调用 160 6.2.3 关于函数返回值的注意事项 162 6.3 函数参数的传递与接收 163 6.3.1 函数参数的传递方式 163 6.3.2 函数形参接收实参的形式 165 6.4 函数中的局部变量和全局变量 166 6.5 lambda表达式 167 6.6 生成器函数 169 6.7 自定义函数库 170 6.8 递归函数 172 6.8.1 什么是递归函数 172 6.8.2 递归函数和算法 173 6.8.3 Python中的最大递归次数 175 6.8.4 递归函数举例 175 6.8.5 递归与循环的关系 182 6.8.6 递归函数的时间效率 182 6.9 类和对象 184 6.9.1 类和对象的概念 184 6.9.2 类的定义和使用示例 184 思考题 185 第7章 Python的序列操作 188 7.1 序列结构 188 7.2 列表及其操作 189 7.2.1 列表的标准形式 189 7.2.2 列表对象的创建和删除 190 7.2.3 列表元素的读取、修改和删除 190 7.2.4 列表对象常用的方法 191 7.2.5 用内置函数对列表进行操作 195 7.2.6 用运算符对列表进行运算 197 7.2.7 列表推导式 199 7.3 元组及其操作 200 7.3.1 元组的概念 200 7.3.2 元组的标准形式 201 7.3.3 元组对象的创建 201 7.3.4 元组元素的读取 201 7.3.5 元组对象常用的方法 202 7.3.6 用内置函数对元组进行操作 202 7.3.7 用运算符对元组进行运算 202 7.3.8 生成器推导式 203 7.4 字典及其操作 203 7.4.1 字典的标准形式 203 7.4.2 字典的创建 204 7.4.3 字典元素的添加和修改 204 7.4.4 字典元素的读取 205 7.4.5 字典元素的删除 206 7.4.6 字典对象常用的方法 207 7.4.7 用内置函数对字典进行操作 207 7.4.8 用运算符对字典进行运算 209 7.5 集合及其操作 209 7.5.1 集合的标准形式 209 7.5.2 集合的创建 210 7.5.3 集合元素的添加 210 7.5.4 集合元素的删除 210 7.5.5 集合元素的读取 211 7.5.6 集合对象常用的方法 211 7.5.7 用内置函数对集合进行操作 211 7.5.8 用运算符对集合进行运算 212 7.6 切片 212 7.6.1 切片的格式 213 7.6.2 用切片对列表的元素进行增删改 214 7.7 NumPy和Pandas扩展库的简单操作 214 7.7.1 NumPy扩展库 214 7.7.2 Pandas扩展库 217 7.8 序列类对象的通用操作总结 220 7.9 综合举例 221 7.9.1 判断列表中有无重复元素 221 7.9.2 百分制转五分制 222 7.9.3 中文星期名称转英文星期名称 222 7.9.4 判断某年某月有几天 223 7.9.5 求两个可迭代对象的笛卡尔积 223 7.9.6 查找列表中最小元素的所有位置 224 7.9.7 查找N以内的所有素数 224 7.9.8 年份生肖(一) 226 7.9.9 农村小孩的乳名(一) 227 7.9.10 天干地支顺序配对(一) 228 7.9.11 判断黑洞数(一) 229 7.9.12 哥德巴赫猜想(二) 230 7.9.13 信息加密(二) 231 思考题 232 第8章 字符串 234 8.1 字符串的表示 234 8.1.1 字符串界定符 234 8.1.2 转义字符 235 8.1.3 原始字符串 236 8.1.4 字符串和字符的区分 236 8.1.5 字符串的标准形式 237 8.1.6 长字符串的表示方法 237 8.1.7 三引号注释 238 8.2 字符串的操作 238 8.2.1 Python关于对象的通用操作 238 8.2.2 关于序列类对象的通用操作 238 8.2.3 关于有序序列类对象的通用操作 239 8.2.4 关于元素可比较的有序序列类对象的通用操作 240 8.2.5 针对字符串对象的其他操作 240 8.3 字符串方法 240 8.3.1 格式化类的方法 241 8.3.2 排版类的方法 241 8.3.3 类型判断类的方法 242 8.3.4 查找类的方法 243 8.3.5 统计类的方法 244 8.3.6 首尾匹配类的方法 244 8.3.7 分割类的方法 244 8.3.8 合并类的方法 246 8.3.9 大小写转换类的方法 246 8.3.10 削边类的方法 247 8.3.11 替换类的方法 247 8.3.12 编码解码类方法 248 8.4 字词统计和中文分词 249 8.4.1 字符统计 249 8.4.2 词语统计 251 8.4.3 中文自动分词和词性标注 253 8.5 综合举例 254 8.5.1 屏蔽敏感词 254 8.5.2 年份生肖(二) 255 8.5.3 农村小孩的乳名(二) 255 8.5.4 天干地支顺序配对(二) 255 8.5.5 判断黑洞数(二) 256 8.5.6 哥德巴赫猜想(三) 256 8.5.7 信息加密(三) 256 8.5.8 公民身份号码 257 8.5.9 十进制转任意进制 260 思考题 261 第9章 正则表达式 263 9.1 什么是正则表达式 263 9.2 正则表达式的语法 264 9.2.1 万能符 265 9.2.2 转义符 265 9.2.3 元字符 266 9.2.4 选字符 267 9.2.5 连字符 267 9.2.6 脱字符 268 9.2.7 简写符 268 9.2.8 选串符 269 9.2.9 定位符 269 9.2.10 分组符 270 9.2.11 数量符 270 9.2.12 非贪婪匹配标识符 270 9.2.13 子表达式 271 9.2.14 预查 272 9.2.15 命名子表达式 273 9.3 在Python中使用正则表达式 273 9.3.1 re.findall函数 274 9.3.2 re.match函数 277 9.3.3 re.search函数 278 9.3.4 re.split函数 279 9.3.5 re.sub和re.subn函数 280 9.3.6 re.escape函数 280 9.3.7 re.compile函数 281 9.4 综合举例 282 思考题 285 第10章 文件读写 287 10.1 文件简介 287 10.2 内置函数open 288 10.2.1 open函数的参数介绍 288 10.2.2 open函数的mode参数详解 288 10.2.3 文件对象的方法 289 10.3 文本文件的读写 290 10.3.1 从文本文件读取数据 290 10.3.2 将数据写入文本文件 291 10.3.3 用上下文管理语句with来管理文本文件读写 292 10.4 JSON文件的读写 292 10.5 CSV文件的读写 293 10.6 二进制文件的读写 296 思考题 296 第11章 目录与文件操作 298 11.1 文件和目录 298 11.1.1 驱动器 298 11.1.2 目录、文件夹、路径 298 11.1.3 目录名和文件名的命名规范 299 11.1.4 当前目录 299 11.1.5 环境变量 300 11.1.6 绝对路径和相对路径 300 11.1.7 可执行程序和应用程序 301 11.1.8 默认应用程序 301 11.2 文件目录操作的有关标准库介绍 302 11.2.1 os.path标准库介绍 302 11.2.2 os标准库介绍 305 11.2.3 shutil标准库的常用函数介绍 314 11.3 文件目录操作需要考虑的因素 315 11.4 文件目录操作 316 11.4.1 无读取写入文件 317 11.4.2 读取文件无写入 317 11.4.3 无读取写入目录 318 11.4.4 读取目录无写入 318 11.4.5 读取文件写入文件 319 11.4.6 读取文件写入目录 320 11.4.7 读取目录写入文件 320 11.4.8 读取目录写入目录 321 思考题 324 第12章 常用的Python标准库 325 12.1 collections标准库 325 12.2 copy标准库 327 12.3 decimal标准库 327 12.4 fractions标准库 328 12.5 functools标准库 329 12.6 itertools标准库 330 12.6.1 combinations对象 330 12.6.2 permutations对象 331 12.6.3 product对象 331 12.7 math标准库 333 12.8 random标准库 333 12.8.1 choice函数 334 12.8.2 randint函数 334 12.8.3 random函数 334 12.8.4 randrange函数 334 12.8.5 sample函数 335 12.8.6 shuffle函数 335 12.8.7 uniform函数 336 12.8.8 应用示例 336 12.9 sys标准库 337 12.9.1 获取Python解释器的位置 337 12.9.2 添加扩展库搜索目录 338 12.9.3 终止运行Python程序 338 12.9.4 获取命令行参数 339 12.10 tempfile标准库 342 12.10.1 功能介绍 342 12.10.2 应用示例 344 12.11 time标准库 344 12.11.1 有关概念 344 12.11.2 函数介绍 345 12.11.3 应用示例 346 12.12 datetime标准库 349 12.12.1 datetime标准库定义的常用类 349 12.12.2 应用示例 353 思考题 353 第二篇 排错篇 第13章 常见错误类型 356 13.1 编码错误 356 13.2 缩进错误 357 13.2.1 不当缩进错误 357 13.2.2 混用制表符和空格 358 13.3 语法错误 358 13.3.1 混淆大小写 358 13.3.2 混淆全半角 359 13.3.3 写错关键词 359 13.3.4 括号不配对 360 13.3.5 用三引号注释代码块引起语法错误 360 13.3.6 其他语法错误 361 13.4 运行错误 361 13.4.1 数学运算错误 361 13.4.2 数据类型错误 361 13.4.3 下标越界错误 362 13.4.4 文本文件编码错误 363 13.4.5 扩展库出错 364 13.4.6 计算机配置环境出错 365 13.5 逻辑错误 367 13.5.1 循环终值设定有问题 367 13.5.2 不同用途的变量同名 367 13.5.3 不该变的变量值被改变 368 13.5.4 语句缩进层次不清 368 13.5.5 混淆运算符的优先级 368 13.5.6 列表赋值错误 369 13.5.7 调用对象的方法不加括号 370 13.5.8 算法错误 370 第14章 代码调试 371 14.1 输出对比法 371 14.2 IDLE调试法 373 14.3 装饰器方法 375 附录A 环境变量设置 378 附录B 常用Python语句 383 附录C 常用Python运算符 384 附录D 内置函数format 385 附录E %格式化方法 387 附录F 不能显示的四字节汉字 389 附录G PyPDF2的BUG及解决方案 391 参考文献 393
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0435570