1Python编程:从入门到实践(第3版)

起步

Python环境搭建

Python安装程序运行Hello World

🎯 AI 时代的学习建议:不要只读理论。理解这一章的设计动机(为什么需要这个概念?)和边界条件(什么情况下会失效?)。当 AI 生成的代码涉及这些概念时,你能判断它是否用对了场景。AI 能帮你总结内容,但无法替代你亲手阅读、思考、建立直觉的过程。

第1章:起步(Getting Started)

一、导读

1.1 本章学习目标

第1章是《Python编程:从入门到实践》的开篇之作,它将带你完成Python开发环境的搭建,并运行你的第一个Python程序。Python以简洁、优雅的语法著称,是目前最受欢迎的编程语言之一。本章的核心学习目标包括:

  • 了解Python的发展历史和特点:Python是谁创造的?为什么它如此流行?
  • 掌握Python的安装和环境配置:如何在你的系统上安装Python?
  • 学会使用Python交互式解释器:如何在终端中直接运行Python代码?
  • 编写和运行第一个Python脚本:如何创建 .py 文件并执行它?
  • 理解Python的缩进规则:Python用缩进而非花括号来定义代码块
  • 选择合适的开发工具:VS Code、PyCharm等IDE各有什么特点?

1.2 为什么第一章如此重要

万事开头难,但Python的开头特别简单。本章的价值在于让你快速建立起对Python的第一印象:这门语言到底有多简洁?开发环境如何搭建?第一个程序如何运行?这些基础问题解决了,后续学习才能顺畅。

Python的设计哲学强调代码的可读性和简洁性。正如"Python之禅"所说:"Beautiful is better than ugly. Simple is better than complex."(优美胜于丑陋,简洁胜于复杂)。这种设计哲学使得Python成为入门编程的理想选择,同时也是专业开发者的得力工具。

1.3 核心问题引导

在阅读本章时,请带着以下问题思考:

Python 2和Python 3有什么区别?为什么应该选择Python 3?

Python是解释型语言还是编译型语言?它的执行方式和C++有什么不同?

什么是REPL(读取-求值-打印循环)?交互式解释器有什么优势?

Python的缩进规则为什么如此重要?它和C/Java的花括号有什么区别?

虚拟环境(virtual environment)是什么?为什么需要它?

PEP 8代码风格指南包含哪些核心规则?


二、核心概念详解

2.1 Python简介

Python由Guido van Rossum于1989年圣诞节期间开始开发,1991年发布第一个版本。Python的名字来源于英国喜剧团体"Monty Python",而非蟒蛇。

Python的核心特点:

  • 简洁易读:Python的语法接近自然语言,代码即文档
  • 解释型语言:不需要编译,直接运行
  • 动态类型:变量不需要声明类型
  • 丰富的标准库: batteries included(自带电池)
  • 跨平台:Windows、macOS、Linux通用
  • 广泛的应用领域:Web开发、数据科学、人工智能、自动化脚本、科学计算

Python的版本选择非常重要。目前Python 2已于2020年停止维护,所有新项目都应该使用Python 3。截至本书出版时,Python 3.12是最新的稳定版本。

2.2 Python环境搭建

2.2.1 安装Python

在Windows上,从 python.org 下载安装程序,安装时务必勾选"Add Python to PATH"选项。在macOS上,可以使用Homebrew安装:

bash
brew install python

在Linux上,大多数发行版已经预装了Python 3:

bash
sudo apt update
sudo apt install python3 python3-pip

2.2.2 验证安装

安装完成后,在终端中验证:

bash
python3 --version
# 输出:Python 3.12.x

2.2.3 交互式解释器

Python的交互式解释器(REPL)是学习和测试代码的利器。在终端中输入 python3 即可进入:

python
>>> 2 + 3
5
>>> print("Hello, World!")
Hello, World!
>>> name = "Python"
>>> print(f"Hello, {name}!")
Hello, Python!
>>> exit()

交互式解释器的优势在于即时反馈:你输入一行代码,Python立即执行并显示结果。这对于学习语法、测试小段代码非常方便。

2.3 第一个Python程序

2.3.1 Hello World

创建文件 hello.py:

python
print("Hello, World!")

运行:

bash
python3 hello.py

就这么简单!对比C++的Hello World程序,Python只需要一行代码。这就是Python简洁性的体现。

2.3.2 变量和基本运算

python
# 变量不需要声明类型
message = "Hello, Python!"
print(message)

# 数字运算
x = 10
y = 3
print(x + y)    # 加法:13
print(x / y)    # 除法:3.333...
print(x // y)   # 整除:3
print(x % y)    # 取余:1
print(x ** y)   # 幂运算:1000

# 字符串操作
name = "Alice"
age = 20
print(f"My name is {name} and I am {age} years old.")

2.3.3 多行输出和格式化

python
# 多行输出
print("Line 1")
print("Line 2")
print("Line 3")

# 使用换行符
print("Line 1\nLine 2\nLine 3")

# 使用制表符
print("Name\tAge\tCity")
print("Alice\t20\tBeijing")
print("Bob\t25\tShanghai")

2.4 Python的代码风格

2.4.1 缩进规则

Python使用缩进来定义代码块,而不是像C/Java那样使用花括号。这是Python语法的核心特点之一。标准缩进是4个空格。

python
# 正确的缩进
if True:
    print("This is indented")
    print("This too")
print("This is not indented")

# 错误的缩进会导致 IndentationError
# if True:
# print("Wrong!")  # IndentationError

2.4.2 注释

python
# 这是单行注释

"""
这是多行注释
(实际上是字符串字面量)
可以跨越多行
"""

x = 42  # 行尾注释

2.4.3 PEP 8代码风格指南

PEP 8是Python官方推荐的代码风格指南,核心规则包括:

  • 使用4个空格缩进
  • 每行代码不超过79个字符
  • 函数和类之间空两行
  • 方法之间空一行
  • 导入放在文件顶部
  • 使用有意义的变量名
  • 函数和变量名使用小写字母和下划线(snake_case)
  • 类名使用驼峰命名法(CamelCase)

2.5 开发工具选择

2.5.1 VS Code

Visual Studio Code是微软开发的免费编辑器,通过Python扩展可以提供强大的开发体验:

  • 智能代码补全(IntelliSense)
  • 代码格式化(Black、autopep8)
  • 调试支持
  • 集成终端
  • Git集成

2.5.2 PyCharm

PyCharm是JetBrains开发的Python专用IDE,分为免费的Community版和付费的Professional版。它提供了开箱即用的Python开发环境,包括代码分析、重构、数据库工具等。

2.5.3 Jupyter Notebook

Jupyter Notebook是数据科学领域最受欢迎的工具,它允许你在浏览器中创建包含代码、文本和可视化的笔记本。非常适合数据分析和教学。

2.6 Python的执行模型

Python是解释型语言,代码的执行方式与C/C++有本质区别:

源代码(.py文件)
    ↓
Python解释器读取源代码
    ↓
编译为字节码(.pyc文件,自动管理)
    ↓
Python虚拟机(PVM)逐行执行字节码

这种执行模型意味着:

  • 不需要显式编译步骤
  • 跨平台性好(只要有Python解释器)
  • 运行速度比编译型语言慢(但有C扩展等优化手段)
  • 开发效率高,适合快速原型开发

三、实战案例

3.1 简单的个人信息程序

python
# 收集并展示用户信息
print("=== Personal Info ===")

name = input("Enter your name: ")
age = input("Enter your age: ")
city = input("Enter your city: ")

print(f"\n--- Summary ---")
print(f"Name: {name}")
print(f"Age: {age}")
print(f"City: {city}")
print(f"Next year, {name} will be {int(age) + 1} years old!")

运行效果:

=== Personal Info ===
Enter your name: Alice
Enter your age: 20
Enter your city: Beijing

--- Summary ---
Name: Alice
Age: 20
City: Beijing
Next year, Alice will be 21 years old!

3.2 简单的数学练习程序

python
import random

print("=== Math Practice ===")
print("Solve the following problems:\n")

score = 0
total = 5

for i in range(total):
    a = random.randint(1, 20)
    b = random.randint(1, 20)
    answer = int(input(f"Question {i+1}: {a} + {b} = "))
    
    if answer == a + b:
        print("Correct!\n")
        score += 1
    else:
        print(f"Wrong! The answer is {a + b}\n")

print(f"Game Over! Your score: {score}/{total}")
if score == total:
    print("Perfect! You're a math genius!")
elif score >= 3:
    print("Good job! Keep practicing!")
else:
    print("Don't give up! Practice makes perfect!")

3.3 文件操作入门

python
# 写入文件
with open("notes.txt", "w") as file:
    file.write("My Python Notes\n")
    file.write("=" * 30 + "\n")
    file.write("1. Python uses indentation\n")
    file.write("2. Variables are dynamic\n")
    file.write("3. Lists are versatile\n")

# 读取文件
with open("notes.txt", "r") as file:
    content = file.read()
    print(content)

四、本章小结

第1章完成了Python开发环境的搭建,并运行了第一个程序:

Python的特点:简洁、易读、解释型、动态类型、丰富的标准库。Python的设计哲学强调代码可读性和简洁性。

环境搭建:安装Python 3,配置PATH环境变量,选择合适的IDE。

交互式解释器:Python的REPL是学习和测试代码的利器,可以即时看到代码执行结果。

代码风格:Python使用缩进定义代码块,遵循PEP 8规范可以写出更可读的代码。

执行模型:Python是解释型语言,源代码先编译为字节码,再由Python虚拟机执行。

本章最重要的启示是:Python的简洁性不是偶然的设计,而是刻意的哲学选择。"Readability counts"(可读性很重要)是Python之禅的核心原则之一。在后续的学习中,你会发现Python的这种设计让程序员能够专注于解决问题,而不是和语法搏斗。


五、思考与练习

思考题

Python是解释型语言还是编译型语言?为什么说这个问题没有简单的答案?

为什么Python使用缩进而非花括号来定义代码块?这种设计有什么优缺点?

print(f"Hello, {name}") 中的 f 前缀是什么意思?这种字符串格式化方式有什么优势?

Python的变量和C++的变量有什么本质区别?

为什么Python社区强调"Pythonic"的写法?什么是Pythonic?

编程练习

编写一个程序,让用户输入名和姓,然后输出格式化后的完整姓名和姓名长度。

编写一个程序,让用户输入一个温度值(摄氏度或华氏度),然后转换为另一种单位输出。

编写一个程序,读取一个文本文件,统计其中的行数、单词数和字符数。


1/11起步
0%