简介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 CodePyCharm 社区版安装体积约 200MB扩展按需下载约 1GB 起Python 配置复杂度选解释器即可需要理解 Project Interpreter调试面板清晰够用更专业但学习曲线陡典型场景入门、脚本、多语言混合开发中大型纯 Python 工程在 VS Code 中安装 Python 扩展左侧扩展面板搜索“Python”选择发布者为 Microsoft 的那个安装完成后新建一个hello.py输入print(hello python)点击右上角三角形运行。如果右下角弹出提示让你选择解释器用 CtrlShiftP 打开命令面板输入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 开始不包含 4range(1, 4)1 2 3从 1 开始不包含 4range(1, 10, 2)1 3 5 7 9步长为 2range(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, encodingutf-8) as f: content f.read() print(content)这段代码有三点要记牢。第一with语句负责自动关闭文件即使中间抛出异常也能正确释放资源第二第二个参数是打开模式r表示只读、w表示写入会覆盖原内容、a表示追加、rb表示以二进制模式读取第三encodingutf-8必须显式指定尤其在 Windows 下如果不写可能会用系统的 GBK 编码去解码导致中文乱码。逐行读取往往比整体读取更实用因为大文件读进内存可能很占空间with open(access.log, r, encodingutf-8) as f: for line in f: line line.strip() print(line)逐行迭代时每一行末尾会带有换行符\n所以用strip()去掉后面的处理才不会多出空字符。写入文件时如果是多个字符串更推荐一次写入一个列表lines [第一行, 第二行, 第三行] with open(output.txt, w, encodingutf-8) as f: f.write(\n.join(lines))这里用join把列表拼接成带换行符的文本比在循环里一次写入一行稍微快一点代码也更干净。4.3 异常处理用具体异常别裸写 except运行环境和文件内容是不可控的所以异常处理是工程代码的基本功。入门阶段只需要记住 try / except / else / finally 的最小组合。try: with open(missing.txt, r, encodingutf-8) as f: data f.read() except FileNotFoundError: print(文件不存在请检查路径) except UnicodeDecodeError: print(编码不对请尝试 GBK 或 UTF-8)错误类型可以在异常对象里看到。常见的几种报错值得专门记一下异常触发例子应对思路NameErrorprint(x)但 x 未定义检查变量名拼写与作用域IndexErrorlst[10]但列表只有 3 个元素先确认len(lst)KeyErrordict[k]但键不存在改用get()或先判断inTypeError1 1先做类型转换AttributeErrorNone.name检查对象是否为 None很多新手在捕获异常时直接写except:这样能消化所有错误但也会把程序 bug 掩盖起来后续排查非常痛苦。正确做法是捕获具体的异常类型把错误信息打印出来。4.4 综合实战统计日志文件里访问次数 Top 5 的 IP这是一个真正的“小工具”案例给定一个access.log文件统计每个 IP 出现了多少次输出最多的前 5 个。它综合用到了文件读写、字符串拆分、字典计数、排序和函数封装。from collections import Counter def count_ips(log_path, top5): 统计访问日志中 IP 出现次数返回 Top N ip_counter Counter() with open(log_path, r, encodingutf-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, top5) 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统计脚本替换成你自己手头的一个重复性劳动跑通它你就完成了零基础到可用的入场。本文还有配套的精品资源点击获取