
写在前面的几句话Python 是目前很多初学者入门编程的第一选择语法简单、生态丰富能写脚本、做数据分析、开发 Web 应用也能玩爬虫和自动化办公。网上关于 Python 的资料很多但往往比较零散要么只讲基础语法要么一上来就讲框架对零基础的朋友并不友好。这篇文章按照我平时的学习路径整理了一份从环境搭建到基础语法再到小型项目实战的完整教程。内容偏实操每段代码都可以直接复制运行涉及的坑点和排查思路也会专门说明。不管你是刚接触编程还是之前学过但没坚持下去都可以跟着这条路走一遍。写 Python 最重要的不是“看”会而是“敲”会。建议你打开电脑一边看文章一边动手运行代码遇到报错不要怕报错本身就是学习的一部分。1. 学 Python 前你最好先了解这几件事1.1 Python 到底是什么Python 是一种解释型编程语言由 Guido van Rossum 在 1991 年发布。它的设计哲学强调代码可读性用缩进来表示代码块而不是像 C、Java 那样使用花括号。这里不讨论太深的历史只说几个和初学者直接相关的特点语法直观接近自然语言适合作为第一门编程语言。解释执行写完代码可以直接运行不需要像 C/C 那样先编译成可执行文件。内存管理自动完成不需要手动申请和释放内存。第三方库非常丰富从网络请求、数据分析到机器学习都有比较成熟的库可用。很多高校的计算机导论课程、数据科学专业的入门课也都开始使用 Python。对于零基础学习者来说第一门语言选择 Python学习曲线相对平缓。1.2 Python 能做什么以我接触到的实际场景为例Python 常见的应用方向包括方向常见库或工具典型场景爬虫requests、BeautifulSoup、Scrapy采集网页公开信息、舆情监控、比价数据分析pandas、numpy、matplotlib报表处理、数据清洗、可视化Web 开发Flask、Django、FastAPI个人博客、后台管理系统、API服务自动化脚本os、shutil、openpyxl批量改名、Excel 处理、邮件自动发送人工智能scikit-learn、PyTorch、TensorFlow图像识别、文本分类、推荐系统游戏/图形pygame、turtle小游戏开发、趣味绘图初学者不用一开始就确定方向先把语言基础打牢后面再根据兴趣选择。1.3 学习路线的整体规划一套完整的零基础 Python 学习路径大致可以分为五个阶段环境搭建安装 Python 解释器配置开发环境。语法基础变量、数据类型、运算符、条件、循环、函数、文件读写、异常处理。面向对象与常用模块类与对象、模块导入、标准库常用功能。项目实战用基础语法完成命令行小项目加深理解。方向进阶爬虫、数据分析、Web 开发或自动化办公。不要试图一个阶段学完所有内容编程能力和健身一样需要持续积累。后面的章节就按照这个路线展开。2. Python 环境搭建从安装到运行第一个程序2.1 Windows 下安装 Python安装 Python 是第一步也是最容易出问题的一步。很多人装完之后在命令行输python提示不是内部或外部命令基本都与环境变量有关。先去 Python 官网下载安装包建议选择 3.10 以上的稳定版本。下载时注意系统位数64 位系统下载 64 位安装包。安装过程中有一个容易忽略的步骤勾选 “Add Python to PATH”。这个选项默认是关闭的如果不勾选安装完之后命令行无法直接使用 python 命令。安装完成后按Win R打开运行窗口输入cmd进入命令行执行python --version如果能输出类似Python 3.12.x的信息说明安装成功。如果提示找不到命令说明环境变量没有配置好。手动配置环境变量的方法右键“此电脑” - “属性” - “高级系统设置” - “环境变量”在系统变量的 Path 中添加 Python 安装目录例如C:\Python312和C:\Python312\Scripts。注意安装多版本 Python 时Windows 会使用 py 启动器。这时可以用py -3指定运行 Python 3用py -3.12指定具体版本避免版本冲突。2.2 编辑器选择VSCode 与 PyCharm编辑器没有绝对的好坏建议根据自己电脑配置和习惯选择。PyCharm 是 JetBrains 出品的 Python IDE功能完整有社区版和专业版。社区版免费适合初学者。它的优点包括自动补全、调试器、虚拟环境管理集成缺点是启动较慢占用内存高。VSCode 是微软出品的轻量编辑器配合 Python 扩展也能达到不错的开发体验。如果你电脑内存不大或者以后可能写前端、Go、Java 等其他语言VSCode 是更通用的选择。以 VSCode 为例安装 Python 扩展后按Ctrl Shift P打开命令面板输入Python: Select Interpreter选择刚才安装的 Python 解释器。2.3 第一个 Python 程序打开编辑器新建一个hello.py文件输入# 文件路径hello.py print(Hello, Python!)在 VSCode 中右键选择“在终端中运行 Python 文件”或者在终端执行python hello.py输出结果为Hello, Python!这里简单解释一下这段代码print是 Python 内置函数负责向控制台输出内容。括号中的字符串Hello, Python!就是要输出的内容。另外很多教程会提到交互式环境。在命令行输入python回车会进入一个提示符的交互模式可以逐行执行代码适合快速验证语法。2.4 包管理工具 pip 的基本用法pip 是 Python 官方推荐的包管理工具用于安装第三方库。安装第三方库的基本命令是pip install 包名例如安装 requests 库pip install requests如果网速较慢可以临时指定国内镜像源例如清华源pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple查看已安装的包pip list升级 pip 本身python -m pip install --upgrade pip这里重点提醒不要在系统环境中随意安装大量第三方库。不同的项目可能依赖同一个库的不同版本为了隔离依赖推荐使用虚拟环境。Python 3.3 之后自带venv模块创建虚拟环境的方法后面会讲到。3. Python 基础语法一条一条敲出来3.1 变量与数据类型Python 是动态类型语言声明变量时不需要指定类型解释器会根据赋值内容自动推断。# 变量赋值 name 张三 age 20 height 1.75 is_student True print(name) print(age) print(height) print(is_student)输出张三 20 1.75 True常用的内置数据类型包括类型说明示例int整数10, -3, 100float浮点数3.14, 1.5, -0.01str字符串hello, Pythonbool布尔值True, Falselist列表[1, 2, 3]tuple元组(1, 2, 3)dict字典{name: 张三, age: 20}set集合{1, 2, 3}可以用type()函数查看变量的类型print(type(10)) # class int print(type(abc)) # class str print(type([1, 2])) # class list3.2 字符串操作字符串在 Python 中使用非常频繁这里整理几个常用方法。s hello python print(s.strip()) # 去掉首尾空格 - hello python print(s.upper()) # 转大写 - HELLO PYTHON print(s.lower()) # 转小写 - hello python print(s.replace(python, world)) # 替换 - hello world print(len(s)) # 长度 - 14字符串拼接有两种常见方式加号和format()。示例name 小明 age 18 # 方式一f-string推荐 print(f我叫{name}今年{age}岁) # 方式二format print(我叫{}今年{}岁.format(name, age)) # 方式三加号拼接 print(我叫 name 今年 str(age) 岁)注意数字和字符串不能直接用拼接需要先通过str()转换。3.3 列表与字典列表是有序的可变序列支持增删改查fruits [apple, banana, orange] # 添加 fruits.append(grape) print(fruits) # [apple, banana, orange, grape] # 删除 fruits.remove(banana) print(fruits) # [apple, orange, grape] # 修改 fruits[0] watermelon print(fruits) # [watermelon, orange, grape] # 遍历 for fruit in fruits: print(fruit) # 切片 numbers [0, 1, 2, 3, 4, 5] print(numbers[1:4]) # [1, 2, 3]字典以键值对形式存储数据适合表示结构化信息person { name: 小红, age: 22, city: 上海 } # 访问值 print(person[name]) # 小红 print(person.get(age)) # 22 # 修改与新增 person[age] 23 person[job] 工程师 # 遍历 for key, value in person.items(): print(key, value)3.4 条件判断与循环条件判断使用if、elif、elsescore 85 if score 90: print(优秀) elif score 60: print(及格) else: print(不及格)for循环用于遍历可迭代对象# 遍历数字范围 for i in range(5): print(i) # 输出 0 1 2 3 4 # 遍历列表 names [张三, 李四, 王五] for name in names: print(name) # 使用 enumerate 同时获取索引和值 for idx, name in enumerate(names): print(idx, name)while循环适用于不确定次数的循环count 0 while count 3: print(fcount {count}) count 1注意count 1这一行不能漏掉否则会形成死循环。写循环时养成检查退出条件的习惯。3.5 函数定义与使用函数可以把重复的代码封装起来便于复用和维护。def add(a, b): 返回两个数的和 return a b result add(3, 5) print(result) # 8函数可以设置默认参数def greet(name, city北京): print(f{name}来自{city}) greet(小明) # 小明来自北京 greet(小红, 上海) # 小红来自上海Python 函数还有一个关键字*args和**kwargs分别用于接收任意数量的位置参数和关键字参数。初学者可以先了解实际写到通用工具函数时会用到。3.6 文件读写文件操作是日常脚本中最常见的需求之一。基本流程是打开文件 - 读取或写入 - 关闭文件。推荐使用with语句它会自动管理文件关闭。写入文件# 写入文件 with open(test.txt, w, encodingutf-8) as f: f.write(第一行\n) f.write(第二行\n)读取文件# 读取文件 with open(test.txt, r, encodingutf-8) as f: content f.read() print(content)注意文件打开模式模式含义r只读w写覆盖原内容a追加写入rb / wb二进制模式读写3.7 异常处理让程序更健壮程序运行中遇到错误会抛出异常导致程序中断。合理捕获异常可以让程序在出错时继续运行或给出友好提示。try: num int(input(请输入一个数字)) print(f你输入的是{num}) except ValueError: print(输入的不是合法数字) except Exception as e: print(f发生未知错误{e})try块中放可能出错的代码except负责捕获对应类型的异常。程序开发阶段不建议把异常全部吞掉否则问题难以定位。3.8 模块与 importPython 的功能扩展通过模块实现。内置模块可以直接导入使用例如import os import sys import json import datetime # 获取当前目录 print(os.getcwd()) # 当前时间 now datetime.datetime.now() print(now.strftime(%Y-%m-%d %H:%M:%S))安装的第三方库也可以按同样的方式导入import requests response requests.get(https://httpbin.org/get) print(response.status_code) print(response.text[:200])注意第三方库需要先通过pip install requests安装才能导入。4. 实战项目一猜数字小游戏4.1 需求分析从最简单的项目开始通过完整开发流程把前面学过的语法串联起来。项目需求程序随机生成一个 1 到 100 之间的整数。用户输入猜测的数字程序提示“大了”“小了”或“猜对了”。记录猜测次数最多猜 7 次超过次数则提示失败。这个项目用到了随机数、输入输出、条件判断、循环、函数、异常处理等知识点非常适合练手。4.2 核心代码实现# 文件路径guess_number.py import random def guess_number(): target random.randint(1, 100) max_attempts 7 attempts 0 print(我已经想好了一个 1 到 100 之间的数字你有 7 次机会。) while attempts max_attempts: attempts 1 try: guess int(input(请输入你的猜测)) except ValueError: print(请输入合法数字) attempts - 1 continue if guess target: print(小了再大一点。) elif guess target: print(大了再小一点。) else: print(f恭喜你猜对了数字就是 {target}你用了 {attempts} 次。) break else: print(f很遗憾机会用完了。正确答案是 {target}。) if __name__ __main__: guess_number()4.3 运行与验证在终端执行python guess_number.py运行效果如下我已经想好了一个 1 到 100 之间的数字你有 7 次机会。 请输入你的猜测50 小了再大一点。 请输入你的猜测75 大了再小一点。 请输入你的猜测63 恭喜你猜对了数字就是 63你用了 3 次。4.4 扩展思路这个项目可以继续扩展的方向增加游戏难度选择不同难度对应不同的数字范围和猜测次数。加入计时功能统计用户猜数字用时。把最高分记录保存到文件中下次运行可以查看历史记录。5. 实战项目二个人记账本命令行程序5.1 项目背景与设计猜数字游戏主要练习逻辑接下来做一个实用的小工具——命令行记账本。功能设计用户可以添加一笔记录包含金额、类型收入/支出、备注。用户可以查看所有记录。用户可以统计总收入、总支出和结余。数据保存到本地 JSON 文件中程序重启后数据不丢失。这个项目涵盖了列表、字典、函数、文件读写、异常处理等核心知识点也接近真实开发中“数据持久化”的概念。5.2 数据模型与文件结构数据使用 JSON 格式存储结构如下[ { amount: 100.0, type: income, desc: 工资, date: 2026-01-15 }, { amount: 35.5, type: expense, desc: 午餐, date: 2026-01-16 } ]项目只有一个主文件account.py结构清晰适合初学者阅读。5.3 核心代码实现# 文件路径account.py import json import os from datetime import date DATA_FILE records.json def load_records(): 从文件加载记账记录 if not os.path.exists(DATA_FILE): return [] try: with open(DATA_FILE, r, encodingutf-8) as f: return json.load(f) except json.JSONDecodeError: return [] def save_records(records): 保存记账记录到文件 with open(DATA_FILE, w, encodingutf-8) as f: json.dump(records, f, ensure_asciiFalse, indent2) def add_record(records): 添加一条记录 try: amount float(input(请输入金额)) except ValueError: print(金额必须为数字) return print(请选择类型1. 收入 2. 支出) type_choice input(输入 1 或 2) if type_choice 1: record_type income elif type_choice 2: record_type expense else: print(无效选择) return desc input(请输入备注) record { amount: amount, type: record_type, desc: desc, date: str(date.today()) } records.append(record) save_records(records) print(记录已添加。) def show_summary(records): 显示收入支出统计 total_income sum(r[amount] for r in records if r[type] income) total_expense sum(r[amount] for r in records if r[type] expense) balance total_income - total_expense print(\n 账本统计 ) print(f总收入{total_income:.2f} 元) print(f总支出{total_expense:.2f} 元) print(f结余{balance:.2f} 元) print(\n) def show_records(records): 显示所有记录 if not records: print(暂无记录。) return print(\n记录列表) for i, r in enumerate(records, 1): type_text 收入 if r[type] income else 支出 print(f{i}. [{r[date]}] {type_text} {r[amount]:.2f} 元 - {r[desc]}) print() def main(): records load_records() while True: print(\n请选择操作) print(1. 添加记录) print(2. 查看记录) print(3. 统计汇总) print(4. 退出程序) choice input(输入选项) if choice 1: add_record(records) elif choice 2: show_records(records) elif choice 3: show_summary(records) elif choice 4: print(再见) break else: print(无效选项请重新输入。) if __name__ __main__: main()5.4 运行演示执行python account.py交互过程请选择操作 1. 添加记录 2. 查看记录 3. 统计汇总 4. 退出程序 输入选项1 请输入金额5000 请选择类型1. 收入 2. 支出 输入 1 或 21 请输入备注工资 记录已添加。两次添加后再查看统计结果如下 账本统计 总收入5000.00 元 总支出135.50 元 结余4864.50 元 5.5 代码中的关键点这段代码主要重复使用了“输入 - 处理 - 保存”的流程结构并不复杂。值得注意的两个点数据持久化每次操作后调用save_records()把内存中的列表写回文件。如果不保存程序退出后数据就丢了。异常处理float(input(...))在用户输入非数字时会抛出ValueError通过try-except捕获后给出友好提示。6. 把 Python 脚本打包成 exe6.1 为什么需要打包自己写的 Python 脚本只能在自己机器上运行因为需要安装 Python 解释器和依赖库。如果想把小工具分享给别人使用或者部署到没有 Python 环境的电脑上就需要把脚本打包成 exe 文件。PyInstaller 是目前最常用的 Python 打包工具支持 Windows、Linux 和 macOS。6.2 安装 PyInstallerpip install pyinstaller6.3 使用 PyInstaller 打包进入脚本所在目录执行pyinstaller -F hello.py参数说明-F打包成单个 exe 文件。-w打包图形界面程序时不显示命令行窗口。--name指定生成的 exe 名称。打包完成后exe 文件在dist目录下直接双击即可运行。如果需要打包带第三方库的项目例如使用了 requests 的脚本PyInstaller 会自动分析并收集依赖不需要额外配置。6.4 打包注意事项打包后的 exe 体积较大是正常现象因为内置了 Python 解释器和依赖库。杀毒软件有时会误报 PyInstaller 打包的程序这是常见现象不是病毒。如果需要减小体积可以尝试 UPX 压缩但提升有限。打包前先在本机测试脚本是否能正常运行不要打包一个有 Bug 的程序。7. Python 学习中的高频报错与排查清单7.1 常见报错汇总学习过程中遇到报错并不可怕关键是能看懂报错信息。下面整理了初学者最常遇到的几类错误报错信息常见原因解决思路NameError: name xxx is not defined变量名拼写错误或变量未定义就使用检查变量名是否一致确认是否漏了赋值语句IndexError: list index out of range列表下标越界查看列表长度确认索引是否在有效范围 0 到 len-1 内KeyError: xxx字典中不存在对应键使用dict.get(key)代替dict[key]或先判断键是否存在TypeError: can only concatenate str (not int) to str字符串和数字直接拼接使用str()转换或用 f-string 格式化ValueError: invalid literal for int() with base 10将非数字字符串转换为整数先验证输入内容或用 try-except 捕获异常FileNotFoundError: [Errno 2] No such file or directory文件路径不存在检查路径拼写使用os.path.exists()判断文件是否存在ModuleNotFoundError: No module named requests第三方库未安装执行pip install requestsIndentationError: unexpected indent缩进错误检查代码缩进Python 对缩进敏感建议统一使用 4 个空格7.2 一只 IndexError 的分析案例下面以IndexError为例看一下怎么系统排查。复现代码users [张三, 李四, 王五] print(users[3])报错信息Traceback (most recent call last): File demo.py, line 2, in module print(users[3]) IndexError: list index out of range排查步骤看报错行确认是第 2 行。看错误类型IndexError表示索引越界。看列表内容users有三个元素索引为 0、1、2。确认原因访问索引 3 超出了列表范围。修改方式users [张三, 李四, 王五] # 方式一使用正确索引 print(users[2]) # 王五 # 方式二使用负数索引访问最后一个元素 print(users[-1]) # 王五 # 方式三遍历列表不关心索引 for user in users: print(user)7.3 命令行提示 python 不是内部或外部命令这个问题在 Windows 上非常常见核心原因是 Python 安装时没有勾选 “Add Python to PATH”或者安装了多版本 Python 导致命令冲突。处理方式已经在环境搭建部分介绍过。如果不想修改系统环境变量也可以直接使用 Python 安装目录下的python.exe完整路径来执行程序。排查顺序确认 Python 是否正确安装。在命令行输入python --version测试。检查 PATH 是否有正确路径。尝试使用py命令。8. Python 进阶学习方向的建议8.1 数据分析与可视化如果对数据处理感兴趣推荐先学习 pandas 和 numpy。pandas 负责表格数据的读写、筛选、分组和聚合numpy 负责数值计算。下面是一个简单的 pandas 示例# 安装 pandas: pip install pandas import pandas as pd # 创建数据表 data { 姓名: [张三, 李四, 王五], 城市: [上海, 杭州, 深圳], 薪资: [12000, 15000, 10000] } df pd.DataFrame(data) print(df) print(df[薪资].mean())8.2 爬虫入门爬虫是从网页中提取公开数据的常用技术。入门可以从 requests 加 BeautifulSoup 开始。需要注意爬虫只能采集公开合法数据不能爬取需要登录权限的内容也不得对目标网站造成压力。爬取前先查看网站的 robots 协议和用户协议这是基本的职业素养。8.3 Web 开发如果目标是做后端开发可以从 Flask 入手它轻量、易学适合快速搭建接口服务。# 安装 flask: pip install flask from flask import Flask app Flask(__name__) app.route(/) def index(): return Hello, Flask! if __name__ __main__: app.run(debugTrue)这个例子只展示了最基础的用法真正开发项目时还要了解路由、模板、数据库、中间件等概念。8.4 自动化办公自动化办公是 Python 在职场中很实用的方向。openpyxl 可以操作 Excelpython-docx 可以操作 WordPyAutoGUI 可以模拟鼠标键盘。常见的场景包括批量处理 Excel 表格、自动生成报表、批量发送邮件、批量修改文件名等。9. 零基础学习 Python 的几个方法论9.1 动手优先看教程为辅很多初学者喜欢收藏各种教程但收藏不等于学会。编程是一项技能必须通过大量敲代码来掌握。建议每学一个知识点都要自己动手写几个练习。9.2 先宽度后深度零基础入门阶段不需要死磕某个知识点。比如装饰器、生成器、多线程这些内容前期了解即可等实际用到时再深入学习。9.3 学会读报错信息报错信息是程序给你的提示不是敌人。遇到报错先看最后一行确认错误类型和出错文件行号再往前看详细堆栈。很多时候问题本身并不复杂。9.4 养成写函数和注释的习惯即使写一个小脚本也要让逻辑清晰。每个函数只做一件事函数名能表达功能必要时写注释。好代码不是写出来就能一次通过而是别人能看得懂、自己也愿意维护的代码。10. 下一步做什么到这一步你已经完成了 Python 从环境搭建到基础语法再到两个小项目的完整实践。建议先停下来不要急着进入高深框架而是用下面几种方式巩固一下把猜数字游戏和记账本项目自己重写一遍不参考原代码。给记账本项目增加“删除记录”和“修改记录”功能。尝试用 pandas 读取一份本地的 Excel 或 CSV 文件做简单的汇总统计。阅读 Python 官方文档中内置函数的部分整理常用函数清单。如果这篇文章对你有帮助可以收藏备用。遇到问题不用慌把报错信息复制到搜索引擎基本都能找到解决方案。Python 学习是一场长跑掌握了基础后面的方向选择就会顺利很多。