
很长时间以来我一直觉得Python入门最难的不是写代码而是迈出“第一步”之前那一片混沌——教材版本对不上、环境装到一半报错、编辑器不知道选哪个等到终于能跑起第一行代码热情已经被消磨得差不多了。这篇文章要解决的就是这个问题。我会带你从下载安装开始把 Python 解释器、VSCode配置、第一个 hello world 程序串成一条完整链路再把这些年我见过的新手最容易踩的坑、最该先搞懂的基础语法一次讲清楚。适合刚接触 Python、或者折腾过几次还没跑通第一个程序的人。1. 项目定位与整体思路拆解1.1 为什么“第一个程序”是一道分水岭很多自学资料喜欢动不动就丢一段爬虫代码、一个量化交易策略或者某个“爱心特效”源码暗示“你复制粘贴就能跑”。但问题在于新手复制这些代码后连报错都看不懂更不知道自己运行的到底是什么最终只能沦为一台没有感情的“复制粘贴机器”。第一个程序的分水岭意义在于它不是“学了多少语法”而是“是否打通了环境、工具、执行这一整套闭环”。只要这个闭环没通后面写任何东西都会觉得是碰运气只要通了后续的语法学习就像往管道里倒水自然往下流。所以我把这个项目定义为“从零到一”核心不是代码量而是建立起你对 Python 运行机制的基本信任感我写的每一行代码都能被解释器按预期消化掉。1.2 从零到一到底要打通哪些环节我梳理了一下所谓“第一个程序”的完整闭环大致包括四个环节解释器安装电脑上必须先有 Python 这个“翻译官”代码才能被读懂并执行。编辑器准备虽然记事本也能写代码但一个合适的编辑器能帮你提前发现大量低级错误。文件保存与执行必须搞清楚代码文件放哪、怎么运行以及运行结果去哪里看。基础语法支撑至少得会写变量、打印输出、读取输入这样第一个程序才能从“死脚本”变成“能和你交互的小工具”。这四个环节缺一不可。环境没通代码再好也跑不起来语法不懂环境通了也写不出像样的逻辑。初学者最忌讳的就是只抓其中一个方面比如天天背语法却从没在电脑上跑通过或者环境装了七八遍却连循环都不会写。1.3 这篇文章适合谁来读如果你是零基础、从没接触过编程这篇文章完全够用我会把每一步需要做什么、为什么这样做、出现什么问题该怎么处理都写出来。如果你之前断断续续学过一点卡在某个环境问题或者“只会背语法、不会实际写”的状态也很适合顺着这篇文章查漏补缺。我默认你用的是 Windows 系统的电脑因为这是最容易出现安装问题的平台。macOS 和 Linux 用户我会单独标注差异点整体流程是通用的。2. 开发环境准备先把“跑道”铺平2.1 Python 解释器选版本和下载安装Python 进入 3.x 时代已经很多年现在完全不用纠结“要不要学 Python 2”。直接认准 3.x 最新稳定版就好。到 python.org 官网的 Downloads 页面会有自动识别系统的大黄色按钮点击下载即可。下载后安装Windows 上有一步极其关键在安装向导的第一个页面上务必勾选最下方的“Add Python to PATH”。很多新手都是在这一步吃亏——当时偷懒没勾选后面在命令行敲python永远提示“不是内部或外部命令”。安装方式选择“Install Now”就行默认路径一般在C:\Users\你的用户名\AppData\Local\Programs\Python\Python31x下面。不建议新手在安装时手动改路径因为默认路径已经是安装器处理过的不容易出问题。2.2 环境变量到底是个什么鬼用过 Windows 的朋友可能对“环境变量”四个字有天然恐惧。其实你可以把它理解成一张“全局通讯录”当你在命令行输入一个命令系统会拿着这个名字去通讯录里查找它对应的程序路径找到就去执行。勾选“Add Python to PATH”的作用就是往通讯录里登记了 Python 的安装目录。这样你不管在哪个文件夹打开终端输入python系统都能迅速找到解释器。装完之后怎么验证呢打开一个新的命令行窗口这一步有讲究旧窗口不会刷新环境变量必须新开输入python --version正常会看到类似Python 3.12.x的输出。如果提示找不到命令请先检查你有没有勾选 PATH 那一项如果勾了还是没有大概率是安装时环境变量没生效可尝试重启终端或手动检查系统环境变量设置。提示macOS 用户系统自带 Python 3但不建议直接使用系统版本而是通过官网安装器或 Homebrew 安装新版本。Linux 用户则可以用系统包管理器安装例如sudo apt install python3。2.3 编辑器选择别在工具上耗太多时间编辑器的选择其实很影响初学者心态。我不建议纯新手直接上 PyCharm 这类重型 IDE虽然功能全但对于一个只需要跑 hello world 的阶段启动慢、界面复杂、概念多容易把注意力从“代码”转移到“工具”上。我比较推荐 VS CodeVisual Studio Code免费、轻量、插件生态丰富而且跨平台一致。你只需要做两件事官网下载安装 VS Code。打开 VS Code在扩展商店搜索Python安装 Microsoft 发布的那个 Python 扩展发布者显示 Microsoft下载量最高。这个扩展非常关键装上之后才有代码高亮、自动补全、直接在编辑器里运行代码的能力。如果没装扩展VS Code 就只是个高级记事本体验差很多。2.4 在 VSCode 里配置 Python 解释器装好扩展后按下CtrlShiftP打开命令面板输入Python: Select Interpreter回车会列出当前系统检测到的所有 Python 版本。选择你刚安装的那个即可。这一步做的事情其实是告诉 VS Code“我要用哪个 Python 来跑代码、装包”。如果这里选错了可能出现一种很经典的现象你在 VS Code 里运行代码命令行提示找不到某某模块但自己在终端里手动运行却没问题——大概率就是解释器选到了系统其他版本的 Python。配置完成后随便新建一个.py文件点编辑器右上角的三角形运行按钮下方会弹出终端并显示结果。这套链路通了后面所有练习都会非常顺畅。3. 第一个程序从 hello world 开始3.1 两种写代码的方式交互式和文件式很多教程开篇会让你在命令行敲python进入一个提示符然后输入代码看结果这种叫交互式模式。它适合验证一两行语法的效果比如你记不清len(hello)的写法可以直接敲进去回车看结果。但这种模式有个致命缺点关掉窗口代码就没了没办法写一个完整的小程序。所以我们的第一个正式程序要采用文件式写法把代码保存为.py文件再交给 Python 解释器执行。交互式模式适合“随口问问”文件式才是真正的“写程序”。不要因为环境装好了就一直停留在后面敲一行丢一行那不是写程序的正确姿势。3.2 动手编写第一段代码在 VS Code 里新建文件输入下面两行print(hello world) print(我的第一个 Python 程序)按CtrlS保存文件名可以叫hello.py注意右下角编码要选 UTF-8。保存位置自己建一个专门的文件夹比如D:\python-learn以后所有练习代码都放这里比散落在桌面强一万倍。保存后点击右上角运行按钮下方终端会打印出hello world 我的第一个 Python 程序到这里“从零到一”的核心目标已经达成——你已经在你的电脑上成功执行了由你编写的 Python 代码。3.3 这行代码背后发生了什么为了让后面走得更稳我建议你多花 30 秒理解执行流程。用文本编辑器写出的print(hello world)是人类可读的源码Python 解释器读了这行代码后会把它编译成字节码然后解释执行最终调用系统功能在终端输出字符串。这里有一个新手常见的误区以为 Python 是“纯解释型语言”。严格说Python 内部也有“编译”步骤只不过它生成的字节码不需要你手动链接解释器会自己处理。你不需要太深入这些原理但至少要知道“解释器在替你做翻译工作”这样将来看到.pyc文件或者__pycache__文件夹时不会一脸懵。我还特别建议第一个程序的输出不要只打印“hello world”加一行你自己的名字或一个中文句子。目的是验证中文输出是否正常。很多人早期没发现编码问题直到写的中文越来越多才突然全部乱码那时候排查难度高得多。3.4 交互模式也是入门好帮手等你验证完 hello.py 能跑再回到命令行输入python进入交互模式依次试一下 1 2 3 a * 5 aaaaa print(hello python) hello python这种即时反馈对初学者建立“代码和结果之间有因果关系”的感觉特别有用。遇到不太确定语法怎么写的小问题随手开个交互窗口试一下比反复翻文档高效得多。4. 基础语法变量、输入与类型转换4.1 变量给数据取一个方便叫的名字跑通了 hello world 之后下一个绕不开的点就是变量。很多人第一次学变量觉得抽象其实你就把它理解成“给数据贴了个标签”后面每次叫这个名字程序就知道你要操作哪份数据。直接看例子name 张三 age 18 height 1.75 print(name) print(age) print(height)Python 里给变量赋值用等号不需要写类型关键字不需要加分号。这和 C、Java 的习惯完全不同。很多从其他语言转过来的朋友刚接触时总会纠结“这个变量到底是整型还是字符串”但 Python 是动态类型语言解释器会根据你赋的值自动判断类型。不过“动态类型”不代表没有类型。依然可以通过内置函数查看一个变量当前是什么类型print(type(name)) # class str print(type(age)) # class int print(type(height)) # class float4.2 给变量命名的几个规矩Python 变量名的规则并不复杂但新手踩坑的比例很高。要点如下只能包含字母、数字、下划线不能以数字开头。不能和 Python 自带的关键字冲突比如if、for、while、class都不行。建议使用小写字母加下划线风格比如user_name。用中文做变量名在 Python 3 里虽然语法上允许但我强烈不建议你养成这个习惯因为在多人协作和后续代码迁移时容易出问题。常见错误示范1st_name a # 报错不能以数字开头 user-name a # 报错减号不是合法字符 class 1 # 报错class是关键字4.3 输入函数 input 和打印输出print()负责输出input()负责输入。两者凑到一起程序就能和人对话了。一个最简单的交互示例如下name input(请输入你的名字) print(你好 name)你要理解的是input()不管你输入了什么它返回的都是一个字符串。这一点很多人经常忽略以为输入了“18”就得到整数 18结果一算加法就出幺蛾子。看这个经典错误age input(请输入年龄) next_age age 1 # 报错字符串不能和整数相加正确的做法是先用int()做转换也就是我们下面要讲的类型转换。4.4 类型转换刷身份证和量体温的差别类型转换这个概念听着玄乎其实非常贴近生活。你把身份证号码给前台看那是“字符串”表示一个编号但你要算“你还差多少年满 30”必须把这个号码中的年龄当成整数去参与加减这就是从字符串到整数的“类型转换”。常用的转换函数有三个int(内容)转成整数float(内容)转成小数str(内容)转成字符串举个例子age_str input(请输入年龄) age int(age_str) print(五年后你, age 5, 岁)很多时候新手会忽略一个细节如果用户在输入框中敲了18.5而你用int(18.5)去转换Python 会直接报错因为int()不允许把带小数点的字符串直接转成整数。你可以先转float(18.5)得到浮点数 18.5再使用int()去掉小数部分。不过后一种做法有点像“先把温度量成 36.5℃再告诉别人‘大概 36℃’”会损失精度正式场景里要根据需求决定是否保留。str()的使用频率也很高。字符串拼接时如果一边是中文一边是数字必须把数字转成字符串age 18 print(我今年 str(age) 岁)顺便提一句用逗号拼接更省事print(我今年, age, 岁)这个写法会在输出时自动用空格分隔各部分效果对新手来说通常完全够用。4.5 数字和字符串踩坑总结我总结了一个“新手高发坑位”表建议收藏操作问题正确做法5 3字符串和整数不能直接相加int(5) 3或5 str(3)int(abc)不能把非数字内容转整数先检查输入格式int(3.14)小数不能直接用 int 转先float(3.14)str(None)输出会变成字符串 None先判断是否为 None初学者不用死记硬背只要记住一个核心原则不同类型之间要互相操作先显式转换成同一种类型。这也是我见过无数 Python 程序员从新手到老手转变的关键认知它比记住某个函数名重要得多。5. 逻辑控制从顺序执行到分支循环5.1 分支判断就是给程序装上“脑子”变量和输出解决的是“表达数据”的问题但程序真正有价值的地方在于“做决策”。Python 的判断用if、elif、else三个关键词。我建议你立刻把下面这段代码敲进一个新文件跑一遍score int(input(请输入考试成绩)) if score 90: print(优秀) elif score 60: print(及格) else: print(需要努力)运行后输入不同的分数你能很直观地看到程序走了不同的分支。这个过程比背无数遍语法规则有效得多。这里必须提醒新手Python 用缩进表示代码块而不是花括号{}。同一个分支下的多行代码必须缩进一致要么都用 4 个空格要么都用 Tab不能混用。VS Code 默认已经是 4 空格你只需要敲回车时会自动缩进不需要手动按太多空格。5.2 条件表达式中的常见误区和细节判断相等要用双等号不是单等号。单等号是赋值双等号才是比较。这个错误我几乎每个初学的朋友都犯过而且很容易藏得深因为代码能运行只是逻辑不对。另外一个容易忽略的点是and、or、not的优先级。写复合条件时我建议一定要加括号不要图省事if (age 18 and score 60) or teacher_approved: print(可以参加)虽然 Python 有自己的优先级规则但加了括号看的人和你自己都能一目了然少犯错。还有一个进阶的小技巧Python 支持链式比较比如if 60 score 90:这比其他语言里写score 60 and score 90更接近自然语言新手看到了也不慌。5.3 for 循环让重复的活交给机器有了分支判断程序能“思考”了有了循环程序才能“不厌其烦地干重复活”。Python 最常用的循环是for配合range()函数for i in range(5): print(第, i, 次循环)这里要理解range(5)产生的是0, 1, 2, 3, 4这一串整数注意不包含 5。这也是新手经常会犯迷糊的地方明明写了 range(5)为什么只打印了 5 次而且从 0 开始如果你希望从 1 数到 5可以写成range(1, 6)。其中第一个参数是起始值第二个参数是不包含的结束值。如果想隔两个数取一次就用range(1, 10, 2)第三个参数是步长。for循环另一个常见用法是遍历列表fruits [苹果, 香蕉, 西瓜] for fruit in fruits: print(我喜欢吃, fruit)这段代码的语义是“从列表中挨个取出元素每取一个存进变量 fruit执行一次循环体”。很多资料把这层关系解释得很绕其实你用中文读一遍代码就通了。5.4 while 循环写出的死循环入门第一课while循环会在条件成立时反复执行。写 while 最容易出事的就是“死循环”比如count 1 while count 5: print(count)这段代码永远不结束因为count的值始终是 1条件1 5永远成立。我建议初学者在刚学 while 的时候一定在循环体内加入让条件走向不成立的那一行比如count 1 while count 5: print(count) count count 1一个值得记住的经验是在入门阶段能用for解决的循环就不要用while。for循环天然帮你管理了“从哪开始、到哪结束、怎么递增”这套流程出错概率小得多。while更灵活适合“不知道要循环多少次只知道某个条件成立时才继续”的场景比如处理用户输入直到输入 q 为止。6. 新手最容易踩的坑与排查技巧6.1 确认你运行的是不是“你以为的那个 Python”环境相关的坑排在第一位。最常见的场景是电脑里其实装了好几个 Python一个来自官网一个来自 Anaconda一个来自 Windows 应用商店。你在 VS Code 里明明装好了包终端跑起来却说找不到或者你更新了代码运行结果却还是旧的。排查技巧在代码最前面加两行调试输出import sys print(sys.executable)如果你在两个环境里分别运行同一个文件这个路径必然不同。看到路径你就能确认当前用的是哪一个解释器。这种“显式输出环境路径”的办法是我在排查各种环境问题时用的第一招比瞎猜高效得多。6.2 缩进错误Python 最“较真”的地方Python 用缩进来界定代码块这既是它的特色也是新手痛点的来源。最常见的报错是IndentationError: unexpected indent或IndentationError: expected an indented block。这两句话翻译过来就是你的代码缩进不一致或者该缩进的没缩进。造成问题的原因通常是混用了空格和 Tab或者复制别人代码时格式乱了。VS Code 可以帮你化解这个问题点击右下角的“空格: 4”选择“转换为空格”然后全选代码按ShiftAltF自动格式化。还有一个容易忽略的点复制网络上带代码块的教程时代码行首可能混入了看不见的特殊字符。如果代码怎么检查都没错却一直报错先把所有缩进全部删掉重新用 Tab 或 4 空格统一排一遍。6.3 中文乱码从源头杜绝中文乱码通常发生在两种场景。一种是代码文件本身包含中文保存时如果不选 UTF-8 编码运行时就可能乱码或直接报SyntaxError。VS Code 默认就是 UTF-8所以问题不大问题大多出在使用 Windows 记事本保存文件时选了 ANSI或者从网页上复制代码出现编码混乱。另一种场景是 print 输出中文在命令行里乱码。老版本 Windows 终端对 UTF-8 支持不好新版本 Windows 10/11 基本没问题。如果遇到这种情况可以在终端里执行chcp 65001把代码页切到 UTF-8再重新运行程序。不过这不是根本解决之道更底层的做法是在 VS Code 设置里把终端编码调整为 UTF-8或者在运行代码时保持文件编码和终端编码一致。6.4pip install装包失败先分清楚是网络问题还是环境问题当你开始装第三方库比如以后要做爬虫装 requests做数据分析装 pandas会发现新手第一个碰壁点大量集中在 pip 上。报错信息里只要有timed out或者connection error大概率是网络原因。解决办法有多种最常用的是换国内镜像源。比如 pip 从清华大学开源软件镜像站下载包速度会快很多。安装时可以这样pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple如果每次都想用镜像不一定要每次敲后缀可以全局配置。但这一操作涉及改 pip 配置文件有一定理解门槛新手可以先用带-i参数的方式顶着等熟悉了目录结构再去优化。如果报错提示is not a supported wheel on this platform多半说明你混用了多个 Python 版本装包时装到了不匹配的解释器上。这时候老老实实回到 6.1 的排查思路看一看当前环境到底是谁。6.5 别急着“完美主义”先跑起来再说最后一条坑来自学习心态。我发现很多入门者有个共同毛病总想把所有语法背熟再动手或者写代码时过度纠结“代码是不是不够优雅”。真实情况是Python 最舒服的学习节奏是“先写能跑的程序再逐步改优雅”。我一个朋友学了一个月连 hello world 都没跑过一次因为他一直在看各种教程里关于装饰器、生成器的高级用法觉得要学完才能写。我的建议是第一个程序只要能在你电脑上跑通就立刻开始写自己的小实验。比如你学了变量和input()就写一个“问名字、算年龄”的小程序学了for循环就试着打印一个九九乘法表。哪怕代码写得笨拙甚至和别人的参考答案完全不同只要运行结果正确这就是有效学习。7. 第一个程序之后的扩展路线7.1 别把“学会了”停留在控制台很多人跑通了 hello world 后很长时间都只会到print为止因为不知道下一步能干嘛。这时候我建议你把注意力转向两个方向一是把基础语法融会贯通二是做一个小项目逼自己用起来。基础语法层面下一批应该掌握的是列表、字典、函数和文件读写。很多人会忽略文件读写总觉得控制台打印就够了但真实世界里你不会一直盯着终端看结果程序跑完要能把数据存下来下次再读进去这才是“程序”而非“命令”。小项目层面可以试试写一个“简易记账本”用文件保存每天的支出或者做一个“猜数字”游戏让电脑随机生成一个数用户反复猜程序提示大了小了。猜数字这个项目我特别推荐因为它在非常小的代码量内综合用到了随机数、循环、条件判断、类型转换和输入输出几乎覆盖了你入门阶段要学的大部分基础点。7.2 推荐一个“能用起来”的前进路径在基础语法还没完全熟练时尽量不要一上来就啃爬虫、量化或者人工智能框架。不是说这些方向不好而是它们会引入大量“Python 之外”的复杂度比如页面结构分析、数据清洗、框架 API 记忆新手很容易失去方向。我比较推荐的前进路径是先掌握基础语法和常用数据结构再学文件处理和异常处理然后试着写命令行小工具最后根据自己的兴趣选择数据分析或 Web 开发方向。每个阶段都做一两个完整的小程序不要光跟着教程敲。举个例子如果你学了os模块可以写一个“批量重命名文件”的小工具把某个文件夹里所有图片按日期重命名。这个工具代码量不大但实用性极强做完它你会对“学 Python 到底有什么用”有切身体感这种成就感是刷一百道语法题都给不了的。7.3 保持一个可持续的练习节奏最后说点关于节奏的个人经验。入门阶段最怕“三天打鱼两天晒网”。我见过太多人第一天装好环境兴奋得不行第二天学完变量觉得无聊第三天下载了一堆资料第四天彻底放弃。我的做法是给自己定一个极低的下限目标。每天哪怕是跑通一个十行的新代码也算今天学了 Python。坚持两周你会发现自己能写的东西已经超出预期。这个习惯比看任何“速成路线图”都管用。另一个小技巧是准备一个专门存练习代码的文件夹文件名用日期命名比如20250101_guess.py。过阵子回头翻看你自己都能直观感受到进步这种反馈是支撑长期学习最好的燃料。