经常有人问我Python到底怎么入门想学编程第一个程序到底该写什么我的回答向来是先别去啃语法书也别急着搞懂那些抽象的概念。先把Python环境装好敲出第一行能跑的代码让屏幕上出现你写的字入门的“门”就迈进去一半了。这篇内容就是写给完全零基础的人从下载安装开始到写出真正能交互的小程序再到碰见常见报错怎么去解决。整个过程不走弯路全是实操争取让你一小时内跑通第一条完整的程序链路。1. 动手之前先给自己收拾一套趁手的Python环境1.1 版本与安装为什么我劝你别碰Python 2做Python教程这些年我见过太多新手卡在第一步装环境。要么装了好几个版本要么装完发现命令行里敲python没反应要么被网上教程里Python 2的print hello老语法绕晕。先说版本选择。现在官方早就停止维护Python 2了新写的代码也都以Python 3为准。你只需要记住一件事装Python 3而且装最新稳定版就够了。目前3.10以上的版本对新手都友好具体小版本号不用太纠结。Python的版本迭代不会像手机系统那样大刀阔斧地改习惯你学的东西在后续版本里基本都能沿用。下载的地方只有一个就是Python官网的下载页面。别的网站虽然也提供安装包但很可能夹带广告、改首页、装全家桶这种亏我不希望你吃一遍。官网下载时Windows用户选择Windows installer (64-bit)的版本macOS用户选择macOS 64-bit installer。下载完安装的时候有一个特别关键的勾选框通常写的是Add Python to PATH翻译过来就是“把Python加入环境变量”。这个勾选一定要打上。为什么这个勾选这么重要PATH你可以理解成计算机的一个通讯录。你让程序、让命令行去帮忙找Python的时候系统会按这个通讯录逐条查找。如果不把Python的位置告诉系统命令行里敲python系统只会回复“不是内部或外部命令”显得Python完全不存在。网上很多“装完跑不起来”的问题八成都是漏了这一步。装的时候勾上后面能省掉一大堆麻烦。macOS这边注意一下新版本系统自带了一个Python 3的简化版本但功能不全。我建议还是去官网安装完整版装完以后在终端里验证一下。验证方式很简单。Windows打开命令行开始菜单搜cmdmacOS打开终端输入这么一行python --version如果看到类似Python 3.12.x这样的输出就说明安装成功如果提示找不到命令Windows上就试着再运行一次安装包修改安装时勾选Add Python to PATH装完以后要重启命令行窗口才生效。macOS如果敲python不行就试试python3。1.2 编辑器与运行方式写代码的地方不等于运行程序的地方把Python本身装好等于有了大脑和一套发声系统。但代码得有地方写、有地方保存这就需要一个“文本编辑器”。很多新手会把Word或者系统自带的记事本当编辑器这能用但非常难受因为代码需要缩进、高亮、自动补全这些功能记事本一概没有。我的建议是入门阶段不需要一上来就折腾那种几百兆的图形化IDE集成开发环境功能太多反而淹没你。先用一个轻量但支持语法高亮的编辑器就足够。市面上有一款免费的叫VS Code的编辑器很多开发者都用它它可以装Python插件让代码高亮、自动格式化。如果你不想折腾插件Python安装时自带的IDLE编辑器也能用它完全够跑通前十几个小练习。IDLE的好处是零配置装上Python就能打开缺点是界面朴素没有代码提示写长代码会比较累。我的经验是前三天用什么都行关键是让注意力集中在代码本身而不是折腾工具。另外还要理解“写代码”和“运行代码”是两件事。.py文件是代码的载体就像写好的剧本运行它相当于把剧本搬上舞台。用编辑器写代码保存成.py后缀的文件然后再用命令行或编辑器里的运行按钮去执行它。不要以为菜单拦里的运行按钮是摆设VS Code、IDLE这些编辑器里通常有Run或者F5快捷键点一下就能看到输出结果。程序运行完输出会显示在下方终端区域那个区域就是我们跟程序对话的窗口。2. 第一个程序让屏幕认识你写的字2.1 三步跑通Hello World现在开始写代码。Hello World是几乎所有编程语言入门的第一个程序它做的事就一件在屏幕上打印一句话。打开你的编辑器新建一个文件敲下这行print(Hello, World!)然后保存。注意文件名要起成以.py结尾的名字比如hello.py。保存的路径最好是一个你熟悉的位置比如桌面或者专门建立一个“Python练习”文件夹。这里有一个新手经常踩的坑保存时文件名忘了加.py后缀或者保存成了hello.py.txt这样系统不认为它是一个Python文件。Windows用户尤其容易遇到这个问题默认情况下资源管理器会隐藏已知文件的扩展名你看到的是hello.py实际上可能是hello.py.txt。在编辑器里保存时文件类型那一栏要选择“所有文件”再手动输入hello.py。保存后运行。IDLE直接按F5VS Code在右上角运行按钮也可以直接在终端里输入python hello.py要在文件所在目录下。看到终端里出现Hello, World!恭喜你写出的第一条程序已经能走了。print这个单词就是“打印输出”的意思在Python里它是一个内置函数作用是把括号里面的内容显示在屏幕上。注意这里有个细节print后面跟着一对英文小括号括号里是英文双引号括起来的一串字符。这些符号全部是英文字符不是中文的括号或者中文引号写代码时的标点都得用英文输入法。这个细节我后面会单独拿出来讲因为太多新人栽在这里。2.2 把Hello World改成你的专属版本Hello World跑通了你其实已经掌握了“输出”这个动作。接下来别浪费时间马上把它变得更有个人色彩一点。比如把打招呼的对象改成你自己的名字print(你好世界) print(我是刚入门Python的小白)Python完全支持中文前提是文件保存为UTF-8编码这几乎是所有现代编辑器的默认配置所以你不用担心。如果你看到屏幕上出现乱码大概率是编辑器保存时用了别的编码格式改回UTF-8就能解决。还可以试试“一次打印多个东西”。print能接收多个参数用逗号隔开输出的时候会自动用空格分隔print(我的第一个程序, 写于今晚)这段代码会输出我的第一个程序 写于今晚。你有没有发现print括号里的字符串如果是逗号分隔输出结果中间其实是用空格连接起来了。这个行为在Python里是固定的用熟了你就能理解print这个函数的脾气。有个特别好用的技巧我头一次见也觉得很神奇字符串可以直接乘一个数字Python会把字符串重复那么多次print(啦 * 3)这会输出啦啦啦。这算是一个小彩蛋先记着以后学循环的时候你会觉得这很Pythonic。2.3 变量到底是什么给数据贴上标签现在我们已经能让屏幕输出固定的内容了但程序真正强大之处是它能处理变化的数据。这里就要引入你编程生涯中最重要的概念之一变量。变量是什么别背定义拿生活打个比方。变量就像是一个贴了标签的收纳盒。你可以把一个盒子的标签写成name然后把“李雷”这个东西放进去。之后只要你提到namePython就知道你指的是“李雷”。你可以随时把盒子里的东西换成另一样东西标签不用变。代码这么写name 李雷 print(name)这两行合在一起意思是把字符串“李雷”存进变量name里然后打印name变量的值。运行时会显示李雷。从这刻起你不需要把名字硬生生写在print里而是通过变量名去引用它。变量的名字可以随便起吗有规则只能由字母、数字、下划线组成不能以数字开头不能跟Python自带的关键字重名比如if、for、class这些。除此之外建议名字要有意义。存名字就用name存年龄就用age别用a、b、c这种毫无信息量的名字。写代码既是写给电脑看的也是写给未来的自己看的。一个星期后回头看自己写的代码看见abc那些变量名你根本想不起来它们是干嘛的。字符串可以赋值给变量数字也可以age 20 print(age) age 21 print(age)第二行输出20第四行输出21。你可以把age这个盒子里的内容从20换成了21。这就是“变量”这个词的精髓它存储的值是可以变化的。对了Python里还有一个细节等号在这里是“赋值”的意思不是数学里的“等于”。在Python看来等号右边的值会被计算出来然后“放进”左边名字对应的盒子里。这跟数学直觉不一样一定要转过这个弯来。有个更直观的例子a 3 a a 1 print(a)如果你用数学思维会觉得a a 1是矛盾的。但在Python里这一行是“先算右边的a 1得到4然后再放进a这个变量里”。所以最终打印出来是4。理解了这一点变量就理解了一大半。3. 让程序会“说话”交互式小程序的完整拆解3.1 input()与类型转换程序怎么听懂你说的话只让程序往外捅话这不算真正的交互。真正的交互是程序能“听”你说什么再根据你说的内容做出不同的反应。这就需要用到另一个内置函数input。input的作用是在屏幕上显示一段提示文字然后等着用户从键盘输入内容按下回车后把输入的内容作为字符串传回给程序。代码是这样name input(请输入你的名字) print(你好 name)运行以后屏幕显示“请输入你的名字”光标会停留在后面等你输入。你输入“韩梅梅”并回车屏幕上就会显示“你好韩梅梅”。这里出现了一个新的符号加号。当加号两边都是字符串时Python会把它们拼接起来形成一个新的更长的字符串。“你好”加上“韩梅梅”就变成了“你好韩梅梅”。注意我在“你好”后面加了一个中文逗号这是为了输出效果看起来自然。跟你平时说话一样你自己决定要不要加。除了字符串拼接还有更现代、更灵活的写法叫f-string。在字符串前面加一个小写字母f然后在字符串内部用花括号{}把变量名包起来Python会自动把变量值塞进对应位置name input(请输入你的名字) print(f你好{name}欢迎来到Python的世界)f-string的可读性比用加号拼接好很多。字符串里面想放几个变量都行位置也不容易错。我强烈建议新手从开始就直接用f-string省心。接下来是个重点坑input返回的数据类型永远是字符串。不管你在键盘敲的是数字1还是字母aPython一律把它当成字符串。字符串和数字在参与计算时完全是两码事。直接拿字符串去算数你立刻会挨一顿教训。不信你试试age input(请输入你的年龄) print(age 1)运行后如果输入20屏幕上会炸出一行红色报错TypeError大致内容是只能将字符串不是“int”连接到字符串。别怕报错这个报错的意思是Python想把age这个字符串跟数字1拼在一起但“字符串”和“整数”两种类型不能直接拼接。想要让用户输入的年龄参与数字运算得先把字符串转成整数或浮点数。转化函数分别是int()和float()。改一下代码age int(input(请输入你的年龄)) print(age 1)几乎一瞬间你会看到一个奇妙的效果输入20输出21。这就对了。input返回的字符串被int()整个强制转换成了整数20加减运算就正常了。同理如果需要处理小数比如身高体重就用float()。3.2 写一个能算BMI的小程序把上面的知识串起来我们写一个在这个阶段最有成就感的小程序计算BMI身体质量指数。这也是我向很多新手朋友推荐过的练习方向因为它逻辑清晰用户交互自然代码量不多不少刚好合适。BMI是体重千克除以身高米的平方。我们设计一下流程程序首先询问用户的身高和体重然后计算出BMI值再根据不同的区间给出评价。完整代码如下height float(input(请输入你的身高米)) weight float(input(请输入你的体重千克)) bmi weight / (height ** 2) print(f你的BMI是{bmi:.2f}) if bmi 18.5: print(体重偏轻注意营养) elif bmi 24: print(体重正常继续保持) else: print(体重偏重建议多运动)一行一行来看。第一行float(input(...))。用户输入的身高是字符串比如1.75直接用float()转成浮点数才能参与计算。第二行同理体重也转成浮点数。第三行bmi weight / (height ** 2)。这里出现了除法/和幂运算**。height ** 2表示身高的平方括号保证了先算平方再除以它。计算结果存储到变量bmi里。第四行print(f你的BMI是{bmi:.2f})。这里的:.2f是f-string的一种格式化规则意思是把bmi这个浮点数显示出来并且保留小数点后两位。如果你不写这个BMI可能会显示成很长一串小数比如22.857142857142858既难看又难懂。接下来是if判断。if翻译过来就是“如果”。如果bmi小于18.5就执行下面缩进的print。如果不满足第一个条件程序也不会跳过去而是继续看elif也就是“再如果”。elif bmi 24的意思是BMI没有小于18.5那如果小于24呢满足就执行对应print。最后那个else是“否则”兜底的意思如果以上条件都不满足也就是BMI大于等于24了就执行最后那个print。这里要记住一个语法点if、elif、else这行后面都有一个英文冒号而且下面的print必须缩进4个空格或者一个Tab键。这个缩进是Python语法的一部分不是装饰。Python用缩进来划分代码块不同的缩进层级代表不同的嵌套关系。你漏了缩进或者多缩进一格程序都会直接报错。这一点跟许多其他语言不一样其他语言是拿大括号划分的。知道了这个缩进错误你一眼就能识别。运行一下这个BMI程序输入你的身高体重程序就会像一个简单的小助手那样给出反馈。这就是程序的交互逻辑输入——处理——输出。你学到的三个函数input、float或者int、print正好对应这三个环节。3.3 双击运行闪退怎么办写好的BMI程序你想分享给朋友玩。在命令行或编辑器里运行没问题但双击hello.py屏幕一闪就没了什么都看不见这是Windows下最常见的现象我收到过无数次同样的问题。原因是什么程序执行得太快瞬间运行完就退出了它们没有任何机会停留黑窗口随之关闭。解决方案其实你用到的知识就能实现在程序末尾加一行input()不带任何参数也行或者带一个提示文字。程序运行到这里会停下来等用户输入。哪怕用户只是随手按一个回车窗口也能停留足够长的时间让人看清之前的输出内容。print(计算完成按回车键退出...) input()这在调试阶段几乎是一个必备小技巧。它也是理解“程序按顺序一行一行执行”的好例子你的程序会从上到下执行直到撞上input()这行才短暂暂停。等别人不再需要双击运行时把这行删掉或者注释掉行首加#就行。另外Windows下双击运行py文件系统默认可能是用记事本打开而不是Python运行。如果不是很熟练别执着于双击运行先在命令行里跑或者继续用编辑器打开运行这样出错信息你能看得清清楚楚。4. 新手拦路虎常见报错与排查实录4.1 缩进错误没对齐的代码会被直接拒收写代码的路上报错就是家常便饭。准确地说不报错才不正常。报错不可怕可怕的是你对着报错一头雾水加慌张。你只要记住一条原则报错信息是程序给你的提示它想告诉你它在哪里、因为什么不舒服。最常见的错误类型之一是缩进错误英文提示通常是IndentationError。它的特点是报告的位置经常指在某个不该有空行的地方或者某个结尾行。我看到很多新手第一次写if语句时print前面忘了缩进或者有的行缩进4格、有的行缩进6格Python就会抱怨这个代码块的缩进怎么对不上解决办法保持代码块内每一行的缩进完全一致。要么全部用Tab键要么全部用空格。我极力推荐统一用4个空格。现在的主流编辑器都有自动缩进功能你只要记得每次写完带冒号的判断语句后按一下回车它会自动帮你缩进到正确位置。我见过有人一会儿空格一会儿Tab调了半小时都看不出问题在哪最后把行尾空格全部显示出来才发现。4.2 中英文标点肉眼很难看出来的坑这应该是Python新手翻车率最高的一个错误类别没有之一。你看这几行代码print“你好”看起来一样吗不一样括号是全角中文括号引号是中文引号。Python只认识英文标点这种中英混合的写法运行起来会直接给一个SyntaxError: invalid character或者语法错误有时候还会用红色高亮把那个中文字符标出来。为什么这么难排查因为中英文标点在视觉上太像了。中文逗号和英文逗号中文引号和英文引号在大部分字体下面几乎一摸一样。而你自己写的时候可能根本不会留意当前输入法是中文还是英文。我自己的排查经验是这样的如果语法检查报错并且提示invalid character第一反应就是检查引号、括号、逗号、冒号是不是全部是英文状态。另外还有一个更彻底的预防办法写代码前先把输入法切换到英文/半角状态写代码期间不要切换到中文。等到要写字符串里的中文内容时你也可以用英文的引号把中文包起来并不影响输出中文。这个习惯越早养成越好。4.3 报错信息怎么看读懂Traceback的关键很多新手一看到红色报错就敲代码的心情全没了直接关掉窗口或者觉得“放弃算了”。其实报错是编程学习过程中最有价值的信息来源之一。拿一个典型的报错来拆解Traceback (most recent call last): File hello.py, line 3, in module print(name 1) TypeError: can only concatenate str (not int) to str第一行Traceback、最后一行的TypeError是核心。TypeError说明是“类型”有问题。具体地看它说“can only concatenate str (not int) to str”翻译过来就是只能把字符串和字符串拼接但现在把一个整数拼接到字符串上了。然后看中间的行File hello.py, line 3告诉你出错的位置在hello.py文件的第3行下面还把那行代码的内容原样列了出来。这样就算你写的程序有100行也能快速定位到具体是哪一行出了事。养成习惯报错出现后先看最后一行——它告诉你错误类型和大致原因再看中间——它告诉你文件和行号。定位能力比背报错原因更关键。你处理了十几个报错以后看到TypeError、NameError、ValueError这些名字你条件反射就知道该怎么办了。4.4 我把用户输入当成数字直接用结果翻车了分享一个我实际辅导中经常碰到的场景。一个初学者写了一个“猜数字”的小程序代码大概是这样的answer 42 guess input(猜一下我想的数字) if guess answer: print(猜对了) else: print(猜错了哦)他跑了好几次输入42程序却一直告诉他“猜错了”但他明明记得自己输入的就是正确的数字。他完全懵了。问题出在哪出在guess始终是字符串。input返回的是字符串42而answer是整数42。在Python里字符串42和整数42是两个东西。你拿它们做比较它们当然不相等所以永远会输出“猜错了”。正确的做法是我们前面学过的类型转换把guess转成int再比较。更稳妥的写法是guess int(input(猜一下我想的数字))这个案例特别经典因为它症状跟“程序逻辑错了”完全一样实际上却是类型错了。以后你在写交互式程序时只要用到input每次都要条件反射地问自己它现在是字符串我需要把它转成什么类型再来计算记住这一点能帮你避开这个“看起来不是问题”的大坑。还有一个更复杂的版本如果用户输入的不是数字比如输入了“abcint(abc)会抛出一个ValueError程序会当场崩溃。要处理这种意外输入需要用到try/except异常捕获那是进阶内容但你现在至少要意识到程序会在极端输入面前崩溃这不是你的错而是你需要学会防御的地方。5. 跑通第一个程序之后下一步应该怎么走5.1 练习方向从“能用”到“顺手”如果你已经跑通了上面所有的内容恭喜你你已经不是那个“完全不知道编程是怎么回事”的人了。你亲手搭建了环境写出了至少两个可以运行的程序还学会了读一部分报错信息。接下来你需要的是不断练习把工具用顺手。练习的方向我不建议你去啃大部头的教材。更好的方式是自己给自己找小任务让程序解决一个你真实生活里的小需求。比如让程序帮你算一笔购物折扣或者自己做一个随机决定今天吃什么的小程序。不用追求逻辑复杂关键是“每天写一点”。一个具体的学习路线建议先巩固变量、字符串、数字、input和print。然后学条件判断if/elif/else配合上面的BMI程序多写几个分支判断的小程序。接着学循环比如用for循环打印出1到100之间的偶数这个概念一旦接上你的程序就开始有“批量处理”的味道了。循环之后再学列表和字典这两个容器能让你存放大量数据。这一圈走下来你已经可以尝试做一些很实用的小工具了。在这个过程中你自然会遇到函数这个概念到时候你会发现原来把重复代码抽出来程序会清爽很多。5.2 养成三个让我少踩坑的习惯写Python这几年我栽过很多次跟头但有几个习惯让我后面省了非常多的时间也在这里分享给刚开始的你。第一个习惯写代码时保持英文输入法。这句话我已经重复过了但它值得重复一万次。大部分语法错误都来源于中英文符号混淆。第二个习惯先生成一个能跑的最小版本再去加新功能。我见过许多新手朋友一上来就雄心勃勃想写一个“完整的学生管理系统”结果写到一半各种报错整个人被打击得不行。更好的做法是先写出一个只有几行、能完成最小流程的程序比如就用input接收一个名字然后print一个欢迎语。确认它能运行再一步步加条件判断、加循环、加更多的功能。小步快跑每步都跑通你就能持续获得正向反馈。信心这东西在编程学习里特别值钱。第三个习惯动手之前先用中文把思路写下来。哪怕就两三句话比如“先问用户身高再问体重然后算BMI最后给它不一样的话”也先写下来。这个习惯的力量非常大因为你一旦把思路写清楚每一句中文翻译成Python代码也就是一个映射关系代码会自然很多。很多人卡住不是因为不会写代码而是因为思路混乱压根不知道下一步要做什么。5.3 我的个人体会最后聊一点个人感受。很多人学编程有一种误解以为必须把一门语言的语法背得滚瓜烂熟才能开始写东西。事实恰恰相反语法是在不断写、不断翻车、不断查资料中慢慢内化的。你刚写完Hello World不需要知道print在底层是怎么工作的你只需要知道在括号里放上一串字符运行它屏幕就会显示它。这种“先用起来再渐渐深入”的方式才是零基础入门最有效率的路。我自己也带过一些完全零基础的新手观察下来那些坚持下来的人都有一个共同特点不害怕报错甚至把报错当成了游戏里的挑战。报错不是失败它是程序在告诉你它需要什么而你的任务就是去理解和响应它。这跟学游泳、学骑车是一样的呛几口水、摔几跤都正常爬起来继续就对了。现在去打开编辑器写你的第一行print吧。哪怕只是把Hello World改成你自己的名字和一句想说的话这一步踏出去你的编程之路就算正式开始了。