前言

每个程序员都有一个关于他们如何学会编写第一个程序的故事。 我从小就开始编程,当时我父亲在数字设备公司工作,这是现代计算时代的先驱公司之一。 我在我父亲在我们地下室组装的计算机上编写了我的第一个程序。 这台电脑只不过是一块裸露的主板,没有外壳就连接着键盘,它的显示器是一根裸露的阴极射线管。 我最初的程序是一个简单的猜数字游戏,看起来像这样:

I'm thinking of a number! Try to guess the number I'm thinkin
g of: 25
Too low! Guess again: 50
Too high! Guess again: 42
That's it! Would you like to play again? (yes/no) no
Thanks for playing!

我永远记得,看着家人玩着我创造的游戏,并且按照我的意图运行,我感到多么满足。

那段早期经历对我的影响是持久的。有目的、能解决问题的软件能让人真正感到满足。我现在编写的软件比我童年时编写的软件能满足更多的需求,但我从创建一个能正常运行的程序中获得的满足感在很大程度上还是一样的。

这本书是给谁的?

本书的目标是让你尽快熟悉 Python,这样你就可以构建可以运行的程序——游戏、数据可视化和 Web 应用程序——同时为接下来的编程打下良好的基础。 Python Crash Course 是为从未使用 Python 编程或从未编程过的任何年龄段的人编写的。 本书适合那些想快速学习编程基础知识以便专注于有趣项目的人,以及那些喜欢通过解决有意义的问题来测试自己对新概念的理解的人。 Python 速成课程也非常适合想要为学生提供基于项目的编程介绍的各级教师。 如果你正在上大学课程,并且想要比分配给你的课文更友好的 Python 介绍,那么这本书也可以让你的课程更轻松。 如果你想转行,Python 速成课程可以帮助你过渡到更令人满意的职业轨道。 它适用于具有广泛目标的各种读者。

您期望学到什么?

本书的目的是使你成为一名优秀的程序员,尤其是一名优秀的 Python 程序员。 当您在通用编程概念中获得坚实的基础时,您将有效地学习并养成良好的习惯。 在完成 Python 速成课程后,您应该准备好继续学习更高级的 Python 技术,并且您的下一门编程语言将更容易掌握。

在本书的第一部分中,您将学习编写 Python 程序所需的基本编程概念。 这些概念与您在开始使用几乎所有编程语言时学到的概念相同。 您将了解不同类型的数据以及在程序中存储数据的方式。 您将构建数据集合,例如列表和字典,并且您将以高效的方式处理这些集合。 您将学习使用 while 循环和 if 语句来测试特定条件,这样您就可以在这些条件成立时运行特定的代码部分,并在条件不成立时运行其他部分——这种技术可以帮助您实现许多流程的自动化。

您将学会接受用户的输入以使您的程序具有交互性,并让您的程序在用户需要时一直运行。 您将探索如何编写使部分程序可重用的函数,这样您只需编写执行某些操作一次的代码块,同时根据需要多次使用该代码。 然后,您将通过类将这个概念扩展到更复杂的行为,使相当简单的程序能够响应各种情况。 您将学习编写能够优雅地处理常见错误的程序。 在完成这些基本概念中的每一个之后,您将使用所学知识编写许多越来越复杂的程序。 最后,您将通过学习如何为您的代码编写测试来迈出中级编程的第一步,这样您就可以进一步开发您的程序,而不必担心引入错误。 第一部分中的所有信息将使您为承担更大、更复杂的项目做好准备。

在第 II 部分中,您会将在第 I 部分中学到的知识应用到三个项目中。 您可以按照最适合您的顺序执行任何或所有这些项目。 在第 12 至 14 章的第一个项目中,您将创建一个名为 “外星人入侵” 的太空入侵者风格的射击游戏,其中包括几个难度越来越大的游戏关卡。 完成此项目后,您应该能够顺利开发自己的 2D 游戏。 即使您不渴望成为一名游戏程序员,通过这个项目工作也是一种将您将在第 I 部分中学到的大部分知识联系在一起的愉快方式。

第 15 至 17 章中的第二个项目向您介绍了数据可视化。 数据科学家使用各种可视化技术来帮助理解他们可用的大量信息。 您将使用通过代码生成的数据集、从在线资源下载的数据集以及程序自动下载的数据集。 完成此项目后,您将能够编写程序来筛选大型数据集,并对许多不同类型的信息进行可视化表示。 在第 18 章到第 20 章的第三个项目中,您将构建一个名为 Learning Log 的小型 Web 应用程序。 这个项目可以让你有条理地记录你所了解的关于特定主题的信息。 您将能够为不同的主题保留单独的日志,并允许其他人创建一个帐户并开始他们自己的日记。 您还将学习如何部署您的项目,以便任何人都可以从世界任何地方在线访问它。

在线资源

No Starch Press 在 https://nostarch.com/python-crash-course-3rd-edition 上提供了关于本书的更多信息。

我还在 https://ehmatthes.github.io/pcc_3e 上维护了一组广泛的补充资源。 这些资源包括以下内容:

设置说明

在线设置说明与书中的内容相同,但它们包含活动链接,您可以单击这些链接以执行所有不同的步骤。 如果您遇到任何设置问题,请参阅此资源。

更新

与所有语言一样,Python 也在不断发展。 我维护着一套完整的更新,所以如果有任何问题不起作用,请在此处查看说明是否已更改。

练习答案

您应该花大量时间自己尝试 “尝试一下” 部分中的练习。 但是,如果您遇到困难并且无法取得任何进展,大多数练习的解决方案都可以在线找到。

小抄

用于快速参考主要概念的全套可下载小抄也在网上提供。

为什么选择 Python?

每年,我都会考虑是继续使用 Python 还是转向另一种语言,也许是编程世界中较新的语言。 但出于多种原因,我继续专注于 Python。 Python 是一种非常高效的语言:与许多其他语言相比,您的程序将以更少的代码行完成更多工作。 Python 的语法还将帮助您编写 “干净” 的代码。 与其他语言相比,您的代码将更易于阅读、更易于调试、更易于扩展和构建。

人们将 Python 用于许多目的:制作游戏、构建 Web 应用程序、解决业务问题以及在各种有趣的公司开发内部工具。 Python 还大量用于科学领域,用于学术研究和应用工作。

我继续使用 Python 的最重要原因之一是因为 Python 社区,其中包括一群非常多元化和热情的人。 社区对于程序员来说是必不可少的,因为编程不是一种孤独的追求。 我们大多数人,即使是最有经验的程序员,也需要向已经解决过类似问题的其他人寻求建议。 拥有一个联系紧密且支持的社区对于帮助您解决问题至关重要,Python 社区完全支持那些将 Python 作为第一门编程语言或具有其他语言背景的人来学习 Python。

Python 是一种很好的学习语言,所以让我们开始吧!

与前一版本变化

以下是第三版中具体变化的摘要:

第 1 章 介绍了文本编辑器 VS Code,它在初学者和专业程序员中很受欢迎,并且在所有操作系统上都运行良好。

第 2 章 包括新方法 removeprefix()removesuffix(),它们在处理文件和 URLs 时很有用。 本章还介绍了 Python 新改进的错误消息,这些消息提供了更具体的信息,可帮助您在出现问题时对代码进行故障排除。

第 10 章 使用 pathlib 模块处理文件。 这是一种更简单的读取和写入文件的方法。

第 11 章 使用 pytest 为您编写的代码编写自动化测试。 pytest 库已成为用 Python 编写测试的行业标准工具。 它非常友好,可以用于您的第一次测试,如果您从事 Python 程序员的职业,您也会在专业环境中使用它。

第 12-14 章 中的外星人入侵项目包括一个控制帧速率的设置,这使得游戏在不同操作系统上运行更加一致。 使用更简单的方法来构建外星人舰队,并且项目的整体组织也得到了清理。

第 15-17 章 中的数据可视化项目使用了 MatplotlibPlotly 的最新功能。 Matplotlib 可视化功能更新了样式设置。 随机游走项目有一个小的改进,提高了绘图的准确性,这意味着每次生成新的游走时,您都会看到更多种类的模式出现。所有以 Plotly 为特色的项目现在都使用 Plotly Express 模块,它使您只需几行代码即可生成初始可视化效果。 在致力于一种绘图之前,您可以轻松探索各种可视化效果,然后专注于完善该绘图的各个元素。

第 18-20 章中的学习日志项目是使用最新版本的 Django 构建的,并使用最新版本的 Bootstrap 设计了样式。 项目的某些部分已重命名,以便更容易了解项目的整体组织。 该项目现已部署到 Platform.sh,这是 Django 项目的现代托管服务。 部署过程由 YAML 配置文件控制,这使您可以很好地控制项目的部署方式。 这种方法与专业程序员部署现代 Django 项目的方式一致。

附录 A 已完全更新,以推荐在所有主要操作系统上安装 Python 的当前最佳实践。 附录 B 包括设置 VS 代码的详细说明,以及当前使用的大多数主要文本编辑器和 IDE 的简要说明。 附录 C 将读者引导至几个最流行的在线资源以获取帮助。 附录 D 继续提供使用 Git 进行版本控制的小型速成课程。 附录 E 是第三版的全新内容。 即使有一套很好的部署您创建的应用程序的说明,也有很多地方可能出错。 本附录提供了详细的故障排除指南,您可以在部署过程首次尝试失败时使用该指南。

该索引已经过彻底更新,您可以将 Python 速成课程用作您未来所有 Python 项目的参考。

感谢您阅读 Python 速成课程! 如果您有任何反馈或问题,请随时与我们联系; 我是 Twitter 上的 @ehmatthes 。