Skip to content

Module 3: Python 基础语法

从零开始学编程 —— 变量、运算、条件、循环


本章概览

编程的本质是用代码表达逻辑。本章将带你掌握 Python 的核心语法,从最基础的变量和数据类型,到条件判断和循环控制。这些是所有程序的基石,也是后续学习数据处理、统计分析的必备基础。


学习目标

学完本章后,你将能够:

  • 理解变量的本质,熟练使用 Python 数据类型
  • 掌握算术、比较、逻辑运算符
  • 使用条件语句(if-elif-else)实现决策逻辑
  • 使用循环(forwhile)处理重复任务
  • 理解 Python 与 Stata/R 的语法差异
  • 编写简单的数据处理和分析程序

章节内容

01 - 变量与数据类型

核心问题: 如何在 Python 中存储和操作数据?

核心内容:

  • 变量的创建和命名规范
  • 五种基本数据类型:
    • 整数(int): 年龄、人口、年份
    • 浮点数(float): 收入、GDP、利率
    • 字符串(str): 姓名、地区、文本
    • 布尔值(bool): 是否就业、是否治疗组
    • None: 缺失值表示
  • 类型转换(int(), float(), str())
  • 类型检查(type(), isinstance())
  • 对比 Stata/R 的变量类型

实际应用:

python
# 研究场景:教育收益率
years_edu = 16        # 受教育年限(整数)
income = 75000.50     # 年收入(浮点数)
name = "Alice"        # 姓名(字符串)
is_employed = True    # 是否就业(布尔值)

02 - 运算符

核心问题: 如何进行数学计算和逻辑判断?

核心内容:

  • 算术运算符: +, -, *, /, //, %, **
  • 比较运算符: ==, !=, >, <, >=, <=
  • 逻辑运算符: and, or, not
  • 赋值运算符: =, +=, -=, *=, /=
  • 成员运算符: in, not in
  • 运算优先级

实际应用:

python
# 计算教育收益率
income_college = 75000
income_high_school = 50000
return_to_edu = (income_college - income_high_school) / income_high_school * 100
print(f"教育收益率: {return_to_edu:.1f}%")  # 50.0%

# 判断高收入者
is_high_earner = income_college > 70000 and is_employed

03 - 条件语句

核心问题: 如何让程序根据条件做出不同决策?

核心内容:

  • if 语句:单条件判断
  • if-else 语句:二选一逻辑
  • if-elif-else 语句:多条件分支
  • 嵌套条件语句
  • 条件表达式(三元运算符)
  • 对比 Stata(if/else)和 R(if/ifelse)

实际应用:

python
# 收入分组
if income < 30000:
    income_group = "低收入"
elif income < 80000:
    income_group = "中等收入"
else:
    income_group = "高收入"

# 政策干预资格判断
eligible = "符合" if income < 50000 and is_employed else "不符合"

研究场景:

  • 分组统计(低/中/高收入)
  • 政策干预资格筛选
  • 异常值标记
  • 虚拟变量生成

04 - 循环

核心问题: 如何高效处理重复任务?

核心内容:

  • for 循环: 遍历序列(列表、范围、字符串)
  • while 循环: 基于条件的重复
  • 循环控制: break(跳出)、continue(跳过)、else(正常结束)
  • 嵌套循环: 处理多维数据
  • 列表推导式: 简洁的循环语法
  • 对比 Stata(forvalues/foreach)和 R(for/apply)

实际应用:

python
# 计算多个教育水平的收入
edu_levels = [12, 14, 16, 18, 20]
for years in edu_levels:
    income = 30000 + 5000 * years
    print(f"{years}年教育 → 收入: ${income:,}")

# 清洗数据:删除负收入
incomes = [50000, -100, 75000, -500, 60000]
clean_incomes = [x for x in incomes if x > 0]

研究场景:

  • 批量数据处理
  • 蒙特卡洛模拟
  • 稳健性检验(多个模型)
  • Bootstrap 抽样

05 - 小结和复习

内容:

  • 核心概念回顾
  • 综合练习题
  • Stata/R/Python 语法对照表
  • 常见错误和调试技巧
  • 下一步学习建议

Python vs Stata vs R 语法对比

变量创建

操作PythonStataR
创建变量age = 25gen age = 25age <- 25
修改变量age = 30replace age = 30age <- 30
查看类型type(age)describe ageclass(age)

条件判断

操作PythonStataR
单条件if x > 0:if x > 0 {if (x > 0) {
多条件if/elif/elseif/else if/elseif/else if/else
条件赋值y = 1 if x>0 else 0gen y = (x>0)y <- ifelse(x>0, 1, 0)

循环

操作PythonStataR
数值循环for i in range(10):forvalues i = 1/10 {for (i in 1:10) {
列表循环for x in list:foreach x in list {for (x in list) {
条件循环while x < 10:while x < 10 {while (x < 10) {

如何学习本章?

学习路线

第 1 天(2小时): 变量与数据类型

  • 阅读 01 - 变量与数据类型
  • 运行所有代码示例
  • 尝试修改变量值和类型

第 2 天(2小时): 运算符

  • 阅读 02 - 运算符
  • 练习算术、比较、逻辑运算
  • 完成练习题

第 3 天(3小时): 条件语句

  • 阅读 03 - 条件语句
  • 编写收入分组程序
  • 练习嵌套条件

第 4 天(3小时): 循环

  • 阅读 04 - 循环
  • 用循环处理数据
  • 学习列表推导式

第 5 天(2小时): 复习和实践

  • 完成 05 - 小结和复习
  • 综合练习题
  • 对比 Stata/R 代码

总时间: 12 小时(1-2 周)

最小化学习路径

如果时间紧张,优先学习:

必学(核心语法,6小时):

  • 01 - 变量与数据类型
  • 02 - 运算符(基础部分)
  • 03 - 条件语句(if-elif-else)
  • 04 - 循环(for 循环 + 列表推导式)

选学(进阶技巧):

  • while 循环
  • 嵌套循环
  • 复杂条件表达式

学习建议

  1. 动手实践 > 阅读理解

    • 每个代码示例都要在 Jupyter 中运行
    • 修改参数,观察输出变化
    • 尝试自己编写类似代码
  2. 对比学习

    • 将 Python 代码与 Stata/R 对比
    • 理解语法差异背后的逻辑
    • 用 Python 复现以前的 Stata 分析
  3. 循序渐进

    • 先掌握基础语法,再学高级技巧
    • 不要跳过练习题
    • 遇到困难先查文档,再求助社区
  4. 建立直觉

    • 理解"为什么"比记住"怎么做"更重要
    • 思考代码背后的逻辑
    • 将编程概念与研究场景关联

常见问题

Q: Python 的索引为什么从 0 开始? A: 这是计算机科学的传统。虽然一开始不习惯,但很快就能适应。记住:list[0] 是第一个元素。

Q: 缩进有什么作用? A: Python 用缩进表示代码块,而不是 {}end。这强制代码格式整洁,但要注意不要混用空格和Tab。

Q: 为什么 = 是赋值,== 是比较? A: = 将右边的值赋给左边的变量,== 判断两边是否相等。这在所有编程语言中都是标准用法。

Q: 列表推导式太难了,能不能不学? A: 初期可以用普通 for 循环,但列表推导式会让代码更简洁。建议先掌握基础循环,再回来学习。

Q: 学完本章就能做数据分析了吗? A: 还不行。本章只是语法基础,实际数据分析需要学习 Pandas(Module 6-7)。但这些语法是后续学习的必要基础。


下一步

完成本章后,你将掌握:

  • Python 的基础语法和编程逻辑
  • 变量、运算、条件、循环的使用
  • 与 Stata/R 的语法对比

Module 4 中,我们将学习数据结构(列表、字典、元组、集合),为处理复杂数据做准备。

Module 6-7 中,我们将学习 Pandas,开始真正的数据分析工作!

继续加油!掌握这些基础语法,你已经走在成为 Python 数据分析师的路上了!


快速链接

基于 MIT 许可证发布。内容版权归作者所有。