简介:Python入门基础教程全套,为零基础学习者量身打造,覆盖Python核心基础知识。演示文稿共含1个PPT文件,大小约25.49MB,内含454页系统讲解,从Python发展历程与语言特点讲到开发环境配置、IPython交互式解释器及PyCharm集成开发环境,并详析Python 2.x与3.x在print函数、默认编码、除法运算、异常处理和八进制写法上的差异。无论你是零基础还是已有一定编程经验,都能借此快速搭建开发环境,理解变量、数据类型、控制结构、函数与模块等基础概念,逐步掌握编程技巧。已有1318人学习,配套交流群支持随时提问,适合自学入门或教学培训使用。
1. 零基础学Python,先消掉“我不会编程”这个心理门槛
很多零基础的同学被 Python 劝退,不是因为语法难,而是因为一开始就被灌输了太多名词:类、继承、装饰器、生成器……在还没运行过一行代码之前,这些概念全是噪音。一套合格的 Python 入门基础教程并不是把语法讲完才算入门,真正让你入门的是“跑通一个最小闭环:写代码、运行、看到结果”。作为带过不少新人的从业者,我一般会把零基础快速入门的路线固定为“环境 → 变量 → 流程 → 容器 → 函数 → 文件 → 小项目”。下面按这条线展开:哪些章节必须学透、哪些坑必然出现、每一步用什么命令验证,你看完就能照着给自己搭一条完整的入门路径。
2. 从下载安装到跑出第一行代码:Python 环境配置全流程
先放下语法,我们把环境讲透。这个阶段的目标只有一个:在命令行里敲python能进入交互式解释器,能用 VS Code 运行.py文件。做不到这两点,后面学再多理论都是空中楼阁。
2.1 版本怎么选:认准稳定版而不是最新版
Python 2 早已停止维护,现在任何新项目都应该用 Python 3。具体到 3.12、3.13 这类小版本,我的建议是挑官方首页推荐的稳定版本,而不是追最新。原因很实际:很多第三方库,比如后面要用的 numpy、pandas、opencv-python,它们的预编译包对新版本的支持往往滞后;刚发布的 Python 版本可能会让你在 pip 安装时报出“没有对应的 wheel 文件”。
去 python.org 的 Downloads 页面,Windows 下认准“Windows installer (64-bit)”,macOS 下选对应芯片的安装包。第一次安装时,记得勾选“Add Python to PATH”,这是新手最常忽略的选项,没勾会导致后面在终端输入python没有任何反应。安装目录建议改成一个无空格、无中文的路径,比如D:\Python312,可以省掉后续 VS Code 或某些终端工具的路径解析问题。
安装完成后用这个命令验证:
python --version如果输出了Python 3.x.x,说明核心环节通过。注意 Windows 上如果弹出 Microsoft Store 的 Python 介绍页,说明系统优先执行了商店里的别名,官方安装完成的解释器没有进 PATH,需要在“设置 → 系统 → 高级系统设置 → 环境变量”里手动把 Python 目录和 Scripts 目录加进去。
2.2 VS Code 还是 PyCharm:零基础阶段怎么选
编辑器选择对入门速度的影响比想象中更大。我一般建议零基础先用 VS Code,理由是它体积小、启动快,装一个 Python 扩展就能跑,而且以后学前端、写 Markdown 都能用同一个工具;PyCharm 社区版确实为纯 Python 开发做了很多优化,但新用户面对它的工程配置界面容易不知所措。
| 对比项 | VS Code | PyCharm 社区版 |
|---|---|---|
| 安装体积 | 约 200MB,扩展按需下载 | 约 1GB 起 |
| Python 配置复杂度 | 选解释器即可 | 需要理解 Project Interpreter |
| 调试面板 | 清晰够用 | 更专业,但学习曲线陡 |
| 典型场景 | 入门、脚本、多语言混合开发 | 中大型纯 Python 工程 |
在 VS Code 中安装 Python 扩展:左侧扩展面板搜索“Python”,选择发布者为 Microsoft 的那个,安装完成后新建一个hello.py,输入print("hello python"),点击右上角三角形运行。如果右下角弹出提示让你选择解释器,用 Ctrl+Shift+P 打开命令面板,输入Python: Select Interpreter,选中前面安装的 Python。
2.3 虚拟环境和国内源:从一开始就养成好习惯
很多教程把虚拟环境当作“后面需要的时候再说”,但零基础阶段恰恰是养成习惯的最好时机。虚拟环境解决的核心问题是依赖隔离:项目 A 用了 requests 2.31,项目 B 用了 requests 3.0,如果没有隔离,两个项目在同一台机器上就可能互相影响。
创建和激活虚拟环境是两行命令:
python -m venv venv # Windows PowerShell 或 cmd 里执行: venv\Scripts\activate # macOS / Linux 执行: source venv/bin/activate激活后命令行前缀出现(venv),说明已经进入隔离环境。之后所有 pip install 安装的包都只存在于这个 venv 文件夹内,删除项目时直接删目录即可,不会污染系统 Python。
pip 默认从 PyPI 官方索引下载包,从国内直连官方源时下载速度很多时候不稳定,下载大一点的包很容易超时。我一般先配置一次全局镜像,之后所有环境都能享受加速:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip config set global.timeout 600配置完成后可以用下面这个脚本验证环境是否完备:
import sys import platform print("Python 版本:", sys.version) print("操作系统:", platform.system()) print("hello, python")这段代码里sys.version返回解释器的详细版本号,platform.system()返回操作系统名称。两条 import 都成功执行,说明解释器、标准库和 VS Code 的联动都没有问题。
2.4 安装阶段的三个高频报错
1). 提示“python was not found; run without arguments to install from the Microsoft Store”
这是 Windows 上出现频率最高的问题。原因是系统找到了商店的 python.exe 别名,却没有找到真正的 Python。解决办法是把系统变量 PATH 里相关目录的顺序提前,或直接禁用别名;最干脆的做法是重装一次,这次务必勾选 Add Python to PATH。
提示:手动修改 PATH 后必须新开一个终端窗口,旧窗口不会自动加载新的环境变量。
2). pip 安装包时出现“WARNING: pip is being invoked by an old script wrapper”
表示 pip 自身版本太旧。用python -m pip install --upgrade pip升级,不要用pip install pip直接做,因为 pip 自身的可执行文件可能被占用。
3). VS Code 能运行但命令行不能运行
这说明 VS Code 自动识别到了解释器,但系统的 PATH 里没有。手动把 Python 安装目录与 Scripts 子目录加入环境变量,然后新开一个终端窗口,不要在旧窗口里反复试。
环境配置是零基础阶段最容易消耗热情的环节,遇到问题先不要怀疑自己,把它当成一道“找链路断了哪里”的排错题。命令行能用,VS Code 自然就能用;VS Code 报错时,优先看右下角解释器路径是否指向同一个安装目录。
3. 把 Python 基础语法练成肌肉记忆:变量、流程控制、容器和字符串
环境就绪后进入 Python 基础语法。这里不按教材的章节顺序讲,我按“写代码时最先碰到的高频语法块”来分组,分四组:变量与类型转换、条件与循环、列表字典、字符串处理。
3.1 动态类型与类型转换:新手最容易踩的坑
Python 是一门动态类型语言,变量不需要声明类型。但不要误以为“不用管类型”,恰恰相反,理解类型是写出不报错代码的关键。看这段代码:
# 把用户的输入转为整数再比较大小 raw = input("请输入一个数字: ") num = int(raw) if num > 10: print("大于 10") else: print("不大于 10")input()返回的一定是字符串。如果你直接把raw和10比较,Python 会报TypeError: '>' not supported between instances of 'str' and 'int'。这个报错几乎每个初学者都会遇到。int()、float()、str()是三个最常用的显式转换函数,转换失败时会抛出ValueError。
另一种隐式转换也很常见:
# 字符串拼接时数字需要转成字符串 name = "Python" version = 3 print(name + " " + str(version)) # 更推荐的写法是 f-string print(f"{name} {version}")f-string 是 Python 3.6 引入的格式化字符串,花括号里可以直接写变量或表达式,不用手动调用str()。后面的例子我会尽量用 f-string,它的可读性比%格式化和旧的format()都好。
3.2 条件与循环:range 和 break 的细节决定成败
条件判断的语法不复杂,但新手容易在多条件组合上写错。
age = 18 has_id = True if age >= 18 and has_id: print("允许进入") elif age >= 16: print("需要监护人陪同") else: print("禁止进入")Python 用and、or、not做逻辑组合,而不是 C 语言里的&&、||。写成age >= 18 and has_id时,两个条件都必须成立才执行第一个分支;如果改成or,只要有一个成立就行。这个差异是非常高频的调试点。
循环的重点是range()的三个参数。直接记这个表格:
| 写法 | 输出 | 说明 |
|---|---|---|
range(4) | 0 1 2 3 | 从 0 开始,不包含 4 |
range(1, 4) | 1 2 3 | 从 1 开始,不包含 4 |
range(1, 10, 2) | 1 3 5 7 9 | 步长为 2 |
range(5, 0, -1) | 5 4 3 2 1 | 反向生成 |
写循环时的另一个常见错误是忘记缩进。Python 用缩进表示代码块,同一层级的语句必须保持相同的缩进数量。如果你在同一个文件里混用 Tab 和空格,解释器会抛出IndentationError。VS Code 的右下角会显示当前文件的缩进方式,保持用 Spaces 4 就行。
3.3 列表、字典、元组、集合:容器选型和推导式
容器类型是 Python 做数据处理的基础。四类容器各有用途,零基础阶段只需要记住下面这个选型表:
| 容器 | 是否有序 | 是否可变 | 去重 | 典型使用场景 |
|---|---|---|---|---|
| list | 是 | 是 | 否 | 存储订单列表、排名数据 |
| tuple | 是 | 否 | 否 | 坐标、固定格式的返回值 |
| dict | 是 | 是 | 键唯一 | JSON 解析、字段映射 |
| set | 否 | 是 | 是 | 去重、集合运算 |
列表的切片是数据处理的高频技能:
scores = [90, 85, 98, 96, 87, 92] top3 = scores[:3] # 前三个 last2 = scores[-2:] # 后两个 evens = scores[::2] # 隔一个取一个 print(top3, last2, evens)列表推导式则把 for 循环和 append 压缩成一行的代码。比如筛选大于 90 的分数:
high_scores = [s for s in scores if s > 90]你可以把它理解成“对 scores 里面的每个 s,满足 s > 90 就放进新列表”。它解决的问题和下面这个等价写法一样,只是更简洁。
high_scores = [] for s in scores: if s > 90: high_scores.append(s)字典则在处理键值对时扮演核心角色。常见操作包括:
student = {"name": "小明", "score": 95} student["city"] = "上海" # 新增键值对 print(student.get("age", "无年龄信息")) # 不存在时返回默认值特别注意使用student["age"]而不存在该键时,会直接抛 KeyError;而get()方法可以返回默认值,所以在处理不确定的键时优先用get()。
3.4 字符串处理:清洗数据从 split、strip、join 开始
字符串方法在 Python 基础语法里绝对不能跳过,因为后面写爬虫、做数据分析,本质上都在操作字符串。高频方法就几个:
strip():去掉首尾的空白字符或指定字符split(sep):按分隔符拆成列表join(iterable):把列表拼成一个字符串replace(old, new):替换子串startswith()/endswith():判断前缀后缀
实际场景选两个:
src = " python,入门,基础 " # 清洗:去空格、按逗号拆分 parts = src.strip().split(",") # ['python', '入门', '基础'] # 重新拼装成标准格式 new_text = " | ".join(parts) print(new_text) # python | 入门 | 基础还有一个和“筛选”相关的常见需求:从一列字符串里筛掉重复项。用集合一步到位:
city_list = ["北京", "上海", "北京", "广州", "上海"] unique_city = list(set(city_list))set()会自动去重,但结果顺序不保证;如果你既要保留顺序又要去重,可以用dict.fromkeys()技巧:
unique_city = list(dict.fromkeys(city_list))dict.fromkeys()会用列表里的元素作为字典的键,键天然唯一,而且 Python 3.7 以后字典保持插入顺序,所以这个写法能得到去重且保序的结果。
3.5 把语法连起来的第一个小任务
基础语法学完,我习惯让新人做一道综合题:从一组包含重复项的姓名和分数文本里,筛选出分数大于 90 且名字不重复的人。
rows = ["小明:92", "小红:88", "小明:92", "小刚:95", "小红:88"] seen = set() result = [] for row in rows: name, score_text = row.split(":") score = int(score_text) if score > 90 and name not in seen: seen.add(name) result.append(f"{name}:{score}") print(result) # ['小明:92', '小刚:95']这里你同时用到了字符串拆分、类型转换、条件判断、集合去重、f-string 格式化。能独立写出这段,说明第三章的语法基础已经过关了。注意变量名seen表示“已经处理过的名字”,这是一种常见的去重模式,后面做爬虫数据清洗时也会反复见到。
4. 函数、文件读写与异常处理:从写脚本到写一个小工具
基础语法熟练后,下一步是把自己的代码组织成函数,并让它能读外部文件、能处理异常。这一步是“能看懂教程”和“能独立写工具”的分水岭。
4.1 函数:把重复代码封装成黑盒
函数的意义不在于“用起来高级”,而在于你只写一次逻辑,可以在多个地方调用,修改时也只改一处。零基础阶段的学习重点是参数、返回值和默认值。
def calc_average(scores): """计算一组分数的平均值""" if len(scores) == 0: return 0 return sum(scores) / len(scores) math_scores = [88, 92, 85, 94] print(calc_average(math_scores)) # 89.75sum()是内置函数,直接对列表求和;除以len(scores)得到平均值。空列表时直接除会报ZeroDivisionError,所以返回 0 兜底。这个兜底逻辑看起来很小,却体现了写函数的第一个习惯:考虑边界条件。
再来看默认参数和关键字参数:
def greet(name, greeting="你好"): return f"{greeting}, {name}!" print(greet("小明")) # 使用默认 greeting print(greet("小明", greeting="早上好")) # 使用 keyword 传参关键字参数的好处是调用时语义明确。等后续用到 pandas 的read_csv、range这类函数时,你会发现大量函数都提供了可选参数,而这些参数往往决定结果细节。
4.2 文件读写:with 语句和编码是两件必知的事
有了函数之后,让 Python 帮我们处理文件就是最实际的自动化。读写文本文件的经典写法是:
with open("notes.txt", "r", encoding="utf-8") as f: content = f.read() print(content)这段代码有三点要记牢。第一,with语句负责自动关闭文件,即使中间抛出异常也能正确释放资源;第二,第二个参数是打开模式,r表示只读、w表示写入(会覆盖原内容)、a表示追加、rb表示以二进制模式读取;第三,encoding="utf-8"必须显式指定,尤其在 Windows 下,如果不写可能会用系统的 GBK 编码去解码,导致中文乱码。
逐行读取往往比整体读取更实用,因为大文件读进内存可能很占空间:
with open("access.log", "r", encoding="utf-8") as f: for line in f: line = line.strip() print(line)逐行迭代时,每一行末尾会带有换行符\n,所以用strip()去掉,后面的处理才不会多出空字符。
写入文件时,如果是多个字符串,更推荐一次写入一个列表:
lines = ["第一行", "第二行", "第三行"] with open("output.txt", "w", encoding="utf-8") as f: f.write("\n".join(lines))这里用join把列表拼接成带换行符的文本,比在循环里一次写入一行稍微快一点,代码也更干净。
4.3 异常处理:用具体异常,别裸写 except
运行环境和文件内容是不可控的,所以异常处理是工程代码的基本功。入门阶段只需要记住 try / except / else / finally 的最小组合。
try: with open("missing.txt", "r", encoding="utf-8") as f: data = f.read() except FileNotFoundError: print("文件不存在,请检查路径") except UnicodeDecodeError: print("编码不对,请尝试 GBK 或 UTF-8")错误类型可以在异常对象里看到。常见的几种报错值得专门记一下:
| 异常 | 触发例子 | 应对思路 |
|---|---|---|
| NameError | print(x)但 x 未定义 | 检查变量名拼写与作用域 |
| IndexError | lst[10]但列表只有 3 个元素 | 先确认len(lst) |
| KeyError | dict["k"]但键不存在 | 改用get()或先判断in |
| TypeError | "1" + 1 | 先做类型转换 |
| AttributeError | None.name | 检查对象是否为 None |
很多新手在捕获异常时直接写except:,这样能消化所有错误,但也会把程序 bug 掩盖起来,后续排查非常痛苦。正确做法是捕获具体的异常类型,把错误信息打印出来。
4.4 综合实战:统计日志文件里访问次数 Top 5 的 IP
这是一个真正的“小工具”案例:给定一个access.log文件,统计每个 IP 出现了多少次,输出最多的前 5 个。它综合用到了文件读写、字符串拆分、字典计数、排序和函数封装。
from collections import Counter def count_ips(log_path, top=5): """统计访问日志中 IP 出现次数,返回 Top N""" ip_counter = Counter() with open(log_path, "r", encoding="utf-8") as f: for line in f: columns = line.split() if len(columns) == 0: continue # 假设每行第一列是 IP 地址 ip = columns[0] ip_counter[ip] += 1 return ip_counter.most_common(top) if __name__ == "__main__": result = count_ips("access.log", top=5) for ip, count in result: print(f"{ip} 出现了 {count} 次")逻辑说明:Counter是 collections 模块提供的计数器,本质上也是字典,不同之处是它对计数场景做了优化,并且自带most_common()方法做排序。循环里用line.split()把每一行按空白拆成列表,第一列是 IP。注意len(columns) == 0时继续,是为了跳过空行。最后通过most_common(top)一次性完成排序与截断。
这段代码已经具备了生产脚本的基本结构:入口用if __name__ == "__main__"保护,统计逻辑封装成函数。把log_path换成你自己的文件,这个脚本可以直接投入日常使用。后续想在爬虫、数据分析方向深入,你会看到这个“读取外部数据 → 解析 → 计数/统计 → 输出结果”的流程被反复使用。
5. 用四道自测题检验入门效果,再选一个方向深耕
学完环境、语法、函数、文件,你已经掌握了 Python 入门最核心的闭环。很多人停在这里不知道该做什么,我用几道小任务作为自测,每道题都对应一个真实场景。
1). 命令行参数与脚本运行:写一个add.py,通过命令行输入两个数字并输出相加结果。 提示:在文件顶部使用import sys,执行python add.py 3 5时应输出 8。
2). 批量重命名:把一个目录下所有文件名中的空格替换成下划线。 提示:用os.listdir()获取文件名,os.rename()重命名,注意先打印原名和新名预览,确认无误再执行。
3). CSV 读取与统计:给定一个sales.csv,计算每个月份的销售额总和。 提示:csv模块的DictReader可以直接把每一行变成可读取的字典,然后用defaultdict(float)累加。
4). 数据可视化验证:用 matplotlib 画一张柱状图,横坐标是月份,纵坐标是销售额。 提示:plt.bar(months, amounts),最后必须调用plt.show()才能弹窗显示。
能独立完成第 1 题,说明基础语法与命令行真的通了;完成第 2 题,说明你已经能从“手动处理文件”走向“写脚本批量做”;完成第 3、4 题,就已经摸到了数据分析与可视化方向的门槛,这也是 Python 在业务岗位中最常见的用途。
检验结果的另外一个维度是调试能力。VS Code 里打断点的节奏要尽早适应:在代码行号左侧点击一下出现红点,然后按 F5 启动调试,程序会停在断点处,左侧面板能看到当前所有变量的值和类型。比如你写了下面这段推导式,不确定i在循环里的取值,就在第二行打断点:
data = [i * 2 for i in range(5)] total = sum(data) print(total)运行调试后,左侧变量面板会逐次显示i的值和当前行的执行状态,比到处加 print 试错高效很多,尤其适合处理列表推导式和字典这种多层嵌套结构。
最后说一个零基础最容易忽略的点:不要同时收藏十几份 Python 入门教程,找一套结构固定的基础教学材料,跟着它一口气学完“基础语法 + 文件 + 一个小项目”,期间遇到不会的只在官方文档和搜索引擎里查。目标不是把 Python 语法手册读完,而是把上面的access.log统计脚本替换成你自己手头的一个重复性劳动,跑通它,你就完成了零基础到可用的入场。
本文还有配套的精品资源,点击获取