经过多年的磨练,《Python应用基础》终于和大家见面了。在本书收笔之时,作者不禁想起当年在旧金山与加州大学伯克利分校Ani Adhikari教授畅聊的场景。Ani Adhikari教授是风靡全美的一门基于Python的数据分析课程的主讲教授。该课程使用的自编讲义Data 8利用大量教学案例来讲授和强化知识,广受非计算机专业学生追捧,成为加州大学伯克利分校仅次于“英文写作”的最受欢迎的课程之一。在当今大数据时代,云计算、机器学习、人工智能等新技术层出不穷。对于当代大学生来说,无论是文科生还是理科生,掌握一门程序设计语言、学会与数据打交道,以及能够通过计算机基础应用处理和分析海量数据已成为技能。事实上,Python语言已经成为数据分析领域的通用语言,许多世界顶级高校包括耶鲁大学、哈佛大学等都已经将Python程序语言应用作为专业的核心基础课程。令人遗憾的是,目前大部分与Python编程相关的教材和指南都是沿用了传统计算机教材的编写方式,重点强调算法和软件开发等知识,但财经类、生物医学类、机械类、地质类等非计算机专业的学生更关注数据整理、分析、可视化的应用实践。本书的一个重要的写作出发点就是从非计算机专业学生的认知思维和实践目的出发,通过案例教学,引导学生快速掌握Python这门优雅且便捷的计算机语言,为非计算机专业学生打开一扇人与计算机自由沟通的未来之门。本书作者具有二十多年的一线高校教学经验,先后教授过Pascal、Delphi、C、C 、C#、Java、Objective C等十余种计算机编程语言。作者自从接触和使用Python之后,就深深地被其独特的魅力所吸引。20世纪90年代初,吉多·范·罗苏姆(Guido van Rossum)创建了Python这门语言,随后这门语言迅速得到了各界人士的关注和青睐,也逐渐被开发出丰富的第三方库,包括面向数据处理的Numpy和Pandas库、面向数据可视化的Matplotlib和Seaborn库、面向深度学习的TensorFlow库等。这些第三方库的加入,让Python的初学者可以在最短的学习曲线下迅速完成高难度的实践项目开发和实施。Python的语言设计非常优美,更加贴近人类的思维习惯。例如,当交换两个变量值的时候,传统的计算机语言需要借助一个中间变量来达成值交换。而在Python语言中,只需要一行简单的代码即可完成两个变量的值交换。事实上,这种类自然语言的程序语言设计方式,极大地降低了初学者的学习门槛,这也是Python之所以能成为人类历史上非常流行的程序设计语言的一个重要原因。如图0-1所示,C语言中完成变量初始化和交换使用了五行代码,而Python中则仅需两行代码。a)C语言中的变量交换b)Python中的变量交换图0-1 变量交换本书一个重要的特点是并非单纯地教授学生学习Python的语法、记忆枯燥的程序代码,而是从语言逻辑角度,将学生置身于一个真实的应用场景中,培养学生的计算思维方式,解决真实的问题。本书的内容源于作者多年的教学讲义,已经得到6 000多名非计算机专业学生的教学检验,并获得了许多宝贵的反馈。本书具有以下几个鲜明的特点。案例驱动教学本书的最大特点是,利用大学生生活中普遍需要面对的生活费管理问题作为框架案例,编写生活费管理程序贯穿本书。生活费管理是大学生都能理解的财经类相关问题。我们将Python基础知识点巧妙地融入该管理程序中的不同部分,在每一章开始时,按照该章的知识点,依据生活费管理问题设计引导案例,首先提出问题,然后介绍能够帮助解决问题的基础知识,最后给出解决问题的程序代码。在本书第一部分基础篇结束时,本书给出了完整的生活费管理程序代码,带领学生完成一个完整的程序设计项目,让学生体会学以致用的快乐。图0-2展示了生活费管理系统的管理界面。本书的目标读者是高等院校文科类学生,特别是财经类学生,因此,本书选用的均是财经相关案例,包括GDP计算、房贷计算、汇率转换、个人所得税计算和人事管理等。图0-2 生活费管理系统界面代码更加PythonicPython与其他语言相比,更加容易学习和使用。Python可以让用户把主要精力放在程序的设计和代码实现上。因此,你一旦习惯了Python的编码方式和风格,就一定会爱上这门语言。本书的所有代码均已在Python3的环境中调试运行成功。我们在编写这些代码时,尽量使用具有Python特点的编码方式。因为我们认为,Python与其他语言的重要不同之处,正是体现在这些简洁优美的Python代码中。例如,对于生成10~100中所有偶数平方列表,本书会偏向于使用带有Python烙印的列表推导式,而不是循环。[i * i for i in range(10, 101) if i % 2 == 0]内容覆盖面广本书共13章,我们把这些章分成了三个部分:基础篇、提高篇和数据分析篇。基础篇包括第1~7章,主要通过案例讲解了Python的基础知识,包括Python中的变量、表达式等概念,整数、浮点数、字符串、列表、元组、字典、集合等基本数据类型,函数的概念以及文件的操作。这些构成了Python的基础框架,是所有Python使用者都必须掌握的基础知识。基础篇以完成一个完整的生活费管理程序为目标,中间穿插着各种财经案例。提高篇包括第8~10章,主要为学有余力的读者介绍更高阶的程序设计概念,包括面向对象程序设计、异常处理和数据库操作等。掌握这些知识可以帮助读者设计和实现更高效、更复杂的程序。在提高篇中,我们也对生活费管理程序进行了改进,但并未给出完整代码,目的是希望读者能在此基础上自行完成,以提高学习效果。数据分析篇包括第11~13章,我们认为,对于文科类学生来说,掌握Python程序语言的主要目的就是进行海量数据的处理和分析。本书是我们编写的Python系列教材中的第一本,这个系列包含Python基础、数据分析和金融智能三册内容。因此,本书的最后简要地介绍了数据分析中NumPy、Pandas和Matplotlib三个基础模块的使用,为学生后续学习系列书中的数据分析和金融智能知识打下基础。这些内容作为承上启下的部分,虽未加入生活费管理程序框架之中,读者同样可以利用这些工具对大学生生活费进行进一步的分析和处理。教学资源丰富为了方便使用,本书提供了电子教案、程序源码、MOOC课程、练习平台、交流群和课后作业答案等丰富的教学资源。电子教案:为配合教师上课使用,本书提供了与教材紧密配套的电子教案,包含PPT和Jupyter Notebook两种形式。程序源码:对于本书中所有的代码源程序,为方便不同IDE开发环境使用,我们将提供包含Python源程序的py文件和Jupyter Notebook两种形式。MOOC课程:我们在中国大学MOOC上开设了与本书紧密结合的在线课程“Python应用基础”,读者可以配合视频和本书内容同步学习。练习平台:除了每章的课后练习,我们还提供了练习平台。学生可以在平台上练习巩固,教师可以按照课程进度布置课后作业。我们的练习均与知识点对应,因此教师可以通过课后作业的情况查看并统计学生对知识点的掌握情况,做到真正的因材施教。因平台需要导入学生信息,请需要使用的教师联系出版社或作者,以获得更好的帮助。交流群:为了便于学习和交流,我们创建了本书的QQ交流群:552991987。读者有任何相关问题均可在交流群中提出,我们会及时回复解答。课后作业答案:教师身份经验证成功后,您可以向我们索要每章的作业答案。请需要使用的教师联系出版社或作者。本书作者是长期工作在教学和科研一线的高校教师,均来自西南财经大学金融科技国际联合实验室和金融智能与金融工程四川省重点实验室,运用Python语言研发了多项国家自然科学基金的科研项目和科技部的重大课题攻关项目,也完成了多个业界实践项目。在实践中,我们深刻体会到了Python作为一个流行的程序语言,以及作为协助人与计算机对话的使者,在理论研究和实践开发方面逐渐发挥出的重大效用。近年来,西南财经大学金融科技国际联合实验室与加州大学伯克利分校的国际风险数据分析联盟(CDAR)联合举办了三届“国际金融科技论坛—SWUFE & CDAR”,论坛的主题发言者包括1997年诺贝尔经济学奖获得者罗伯特·默顿(Robert Merton)教授、2001年诺贝尔经济学奖获得者乔治·阿克洛夫(George Akerlof)教授、2013年诺贝尔经济学奖获得者拉尔斯·皮特·汉森(Lars Peter Hansen)教授、著名经济学家陈志武教授、吴晓求教授,以及数百名金融业界的专业人士和学者。在同与会的诸多行业领军人物和实践高手的沟通中,我们发现一个普遍的共识—Python逐渐成为金融专业人士的一个基础技能,也是诸多金融创新产品的奠基之石。我们希望读者通过对本书的阅读,以及对配套在线资料(视频、PPT、习题)的学习与使用,开启一条通往未来人机互通的道路,迎接大数据时代、人工智能时代的机遇和挑战。最后,特别感谢在本书的编写过程中匡松教授给予的无私指导,以及同事缪春池、张英、刘凌、何福良老师给予的关怀和帮助。同时,感谢余关元、徐晓庆、王垚和胡长宇等博士为丰富本书内容做出的贡献。因时间仓促、作者水平有限,书中难免有不足之处,还请广大读者和同行批评指正。谢志龙 李庆2021年春