搞Python的第一篇笔记,我打算从最底层的环境搭建开始写起。标题就叫“【python】学习笔记(1)”,内容锁定在“python安装”和第一批核心语法。这篇笔记适合零基础准备入门的自学党、想转行做数据分析或自动化脚本的办公族,以及被各种教程绕晕、想找一条清晰路线的人。我会按照自己实际踩坑的顺序来整理:装好Python解释器、选对开发工具、跑通第一个程序、理解变量和数据类型、掌握条件判断和循环,最后把初学者最容易碰到的报错集中盘一遍。这些内容都是我自己验证过的,直接照着操作,基本能顺滑跑通。
1. 环境搭建:把Python解释器装进电脑
1.1 下载安装包与版本选择
Python的官网是python.org,下载页面里会有很多版本,新手容易看花眼。我的建议是挑当前最新的稳定版,比如3.10、3.11、3.12这一类3.x系列,直接认准带有“Stable”标记的就行。别碰2.x的旧版本,那已经是历史包袱,现在的新库和新语法都不再支持,学它纯属浪费精力。
下载的时候要看清楚自己的系统位数。Windows用户右键“此电脑”选“属性”,能看到“系统类型”里写的是64位还是32位。绝大多数现代电脑都是64位,那就下载Windows installer (64-bit) 这个文件。如果不小心下错了32位版本,虽然也能跑起来,但以后装某些对性能有要求的第三方库可能会碰到奇奇怪怪的问题。
安装过程里有一个特别关键的勾选项:Add Python to PATH。这个选项通常在安装界面最底部,默认是不勾选的,但如果不勾选,装完之后在命令行里输入python会提示“不是内部或外部命令”,到时候还得手动配置环境变量,对新手来说非常劝退。所以安装时一定要把这个选项勾上,这一步能省掉后面一大半麻烦。
安装路径方面,可以用默认的C盘路径,也可以自定义到一个好记的位置,比如D:\Python3。自定义路径的好处是以后找文件、排查问题都直观,但要注意路径里不要出现中文和空格,否则某些第三库在编译时可能会报编码错误。
1.2 验证安装是否成功
装完之后怎么确认真的装好了?很简单,按Win + R键打开运行窗口,输入cmd回车,打开命令行窗口,然后敲一句:
python --version如果显示类似Python 3.11.4这样的版本信息,说明安装成功。如果提示找不到命令,先别慌,多半是刚才那个“Add Python to PATH”没有勾选,或者勾选了但没生效。
这时候有两个补救办法。第一个办法是手动添加环境变量:右键“此电脑”选“属性”,点“高级系统设置”,再点“环境变量”,在“系统变量”里找到 Path 这一项,双击编辑,把Python的安装路径和scripts目录都加进去。比如我装在D:\Python3,那就加两条,一条是D:\Python3,一条是D:\Python3\Scripts,后者主要为了让pip命令也能被识别。
第二个办法更省事,直接把之前装好的Python卸载掉,重新运行安装包,这次记得勾选“Add Python to PATH”再装一遍。不要觉得重装麻烦,对于新手来说,重装往往比手动配环境变量更快、更稳。
装好之后还可以顺手验证一下pip,这是Python的包管理工具,以后装第三方库全靠它。在命令行里输入:
pip --version能输出版本信息就说明pip也正常。后面你需要安装requests、pandas这类库时,一条pip install 库名就能搞定。
2. 开发工具选型:别在编辑器上犯选择困难症
2.1 三种常用工具横向对比
Python代码说白了就是纯文本文件,理论上用记事本都能写。但真正上手之后,你会发现一个好用的编辑器能显著提升效率。我自己用过不少工具,这里把最适合新手的三种拉出来对比。
| 工具 | 适合场景 | 优点 | 缺点 |
|---|---|---|---|
| IDLE | 零基础、临时跑小代码 | 装完Python自带,零配置,打开即用 | 提示功能弱,界面简陋 |
| VS Code | 日常开发、学习全程 | 免费、插件丰富、调试方便、跨平台 | 需要花点时间配置 |
| PyCharm | 正式项目、专业开发 | 功能最全,智能提示强,集成了很多开发工具 | 社区版阉割部分功能,专业版收费 |
网上有很多人推荐新手直接上PyCharm,但我的看法不一样。PyCharm确实强大,但对刚接触编程的人来说,界面太复杂,各种窗口和按钮容易让人产生“我是不是漏学了什么”的错觉。而IDLE又太简陋,写稍长一点的代码就感觉施展不开。
2.2 我推荐的组合:VS Code + 插件
如果让我现在给新手一个配置方案,我会推荐VS Code。它下载免费,断网也能装,启动速度比PyCharm快,而且配合插件后,写代码的体验并不比PyCharm差太多。
具体配置就三步。第一步,去VS Code官网下载安装包,安装过程一路点“下一步”,不用改任何选项。第二步,打开软件,左侧边栏找到扩展市场图标,搜索“python”,安装微软官方出的那个Python扩展,注意认准发布者是Microsoft,避免装到奇怪的同名扩展。第三步,按Ctrl+Shift+P打开命令面板,输入Python: Select Interpreter,选择你刚装好的那个Python解释器版本。
配置完成之后,VS Code就具备了语法高亮、代码补全、运行调试这些核心功能。写好的代码文件保存时以.py结尾,比如hello.py,然后在编辑器里右键选“Run Python File in Terminal”,代码就能直接运行并看到输出结果。
在这里也要单独说一句:如果你电脑配置比较陈旧,内存只有4G,VS Code可能跑起来稍有些吃力。这种情况下我建议先用IDLE过渡,等后面代码量真的大了再换工具,完全没问题。
3. 第一个程序:先让电脑开口说话
3.1 用 print 输出内容
Python入门的仪式感来自那一句print("Hello, World!")。打开编辑器,新建立一个文件,输入这句代码,保存为hello.py,然后运行。屏幕上如果打印出Hello, World!,恭喜你,能亲手让电脑执行指令了。
print是Python内置的函数,作用就是把括号里的内容输出到屏幕上。这里有几件细节值得理解透彻。
第一,括号里的内容要用引号包起来,单引号和双引号都可以,效果一样,但不能一边是单引号一边是双引号。比如print("Hello")是合法的,print('Hello')也是合法的,但print("Hello')就会直接报语法错误。
第二,print可以同时输出多个内容,中间用逗号分隔。比如:
print("我叫", "小明", "今年", 18)运行结果会是我叫 小明 今年 18。注意,逗号会在输出时自动变成一个空格。
第三,print默认输出完会自动换行。如果你不希望换行,可以加一个end参数,比如:
print("Hello", end=" ") print("World")这样两次输出的内容就会出现在同一行,中间用空格隔开,结果是Hello World。
刚开始学编程的人容易忽略的是:缩进和标点符号必须用英文半角。在中文输入法状态下敲出的括号和逗号,Python是不认识的。这个坑几乎每个新手都踩过,我当初也是被一个中文冒号活活在编辑器里耗了二十分钟。
3.2 用 input 让程序听你说话
输出学会之后,下一步就是让程序能接收用户的输入,这就要用到input函数。写一个“自我介绍”的小程序:
name = input("请输入你的名字:") print("你好,", name)运行后,控制台会先显示“请输入你的名字:”,等你敲入文字并按下回车,程序才会继续执行,把“你好, [你刚才输入的内容]”打印出来。这里演示了一个非常重要的概念——变量。name就是一个变量,它像一个盒子,负责把用户输入的内容存起来,等后面需要的时候随时取出来用。
input函数有一个容易埋雷的地方:不管你输入的是数字还是文字,它返回的原始类型永远是字符串。打个比方,你问用户“请输入你的年龄:”,他输入了18,但你拿到的18在Python眼里是文本“18”,不是数值18。如果你直接用age + 1去计算明年多大,程序会直接报错,提示你不能把字符串和整数相加。
正确的做法是做一次类型转换,用int()把字符串转成整数:
age = int(input("请输入你的年龄:")) print("明年你", age + 1, "岁")类似的还有float()转小数、str()转字符串。写程序的时候,心里时刻要有一根弦:类型对不对?这比代码能不能跑通过重要得多。
4. 核心语法速览:变量、类型、判断和循环
4.1 变量与常用数据类型
Python是一门动态类型语言,意思是变量不需要提前声明类型。你可以直接写a = 5,也可以下一行写a = "hello",解释器都不会拦你。这种灵活性对新手友好,但也会带来一个隐患:代码写长了之后,你可能会忘记某个变量里存的到底是什么类型,导致运行时错误。所以给变量起名的时候尽量语义化,比如用user_name而不是n,用total_price而不是t。
Python里最常用的几种数据类型,我列了一张表:
| 类型 | 写法示例 | 说明 |
|---|---|---|
| int(整数) | age = 18 | 没有小数点的数字 |
| float(浮点数) | price = 19.9 | 有小数点的数字 |
| str(字符串) | name = "小明" | 文本内容,用引号包裹 |
| bool(布尔) | is_student = True | 只有 True 和 False 两个值 |
| list(列表) | scores = [80, 90, 85] | 一组数据,可追加可删除 |
| dict(字典) | person = {"name": "小明", "age": 18} | 键值对结构,适合表示有属性的对象 |
在列表和字典上下功夫特别值。初学者经常搞不清它们的区别——列表是按顺序排的一串元素,想取第2个就写scores[1];字典是“按名字找值”,想知道这个人的年龄就写person["age"]。这两个结构几乎覆盖了日常自动化脚本里80%的数据组织需求。
顺便解释一下索引为什么从0开始。你要是较真问Python的设计者,他们会回你一句“从0开始是Python的惯例”。实际上这是从C语言继承过来的传统,scores[0]表示列表里的第一项。新手在这里会犯迷糊,scores[1]取出的其实是第二项,特别容易对不上号。
4.2 条件判断:让程序学会做选择
程序最常见的逻辑之一就是根据条件做不同的事,这用到if、elif、else三个关键词。来看一个判断成绩等级的例子:
score = 85 if score >= 90: print("优秀") elif score >= 60: print("及格") else: print("不及格")这段代码运行后,因为score是85,会走中间那条分支,输出“及格”。
理解这段代码的关键在于两点。第一是条件判断的顺序,从上到下依次判断,一旦某个条件成立,后面的分支就全部跳过。所以条件的先后顺序是有讲究的,如果把score >= 60写在前面,那85分在第一步就被拦截了,永远到不了“优秀”那条分支。第二是缩进,同一层逻辑的代码必须缩进对齐。Python通过缩进来区分代码块,这和其他语言用花括号{}不一样。
这里还有一个经常被忽略的比较运算:判断相等用的是==,而不是=。=是赋值,意思是把右边的值存到左边变量里;==才是判断左右两边是否相等。新手写if 1 = 1会立刻报错,原因就是混用了这两者。
5.1 条件判断的延伸:逻辑运算
现实里的判断很少只有单一条件。比如商家要发优惠券,要求是“消费满100元且会员等级不低于2级”,这就是两个条件同时成立。在Python里用and表示“且”,用or表示“或”,用not表示“取反”。
spend = 150 member_level = 3 if spend >= 100 and member_level >= 2: print("满足优惠券发放条件")还可以更进一步,判断一个数是否在某个区间,比如判断及格且非满分:
score = 85 if 60 <= score < 100: print("及格,但不是满分")这种连续比较写法在Python里是允许的,读起来跟数学表达式一样自然。相比写score >= 60 and score < 100这种完整写法,紧凑不少,也很容易看懂。这是我日常写代码比较偏爱的一种风格,新手也可以大胆用。
5.2 循环:让重复的事自动跑
生活中大量任务是重复性的。假如你要把一个列表里的每个数字都打印出来,手写五遍print就够痛苦了,要是一百遍呢?这就要用for循环。
scores = [80, 90, 85] for s in scores: print(s)运行结果会依次输出80、90、85。这个语法可以这样理解:对于列表scores里的每一个元素,把它临时命名为s,然后执行一次缩进的代码块。循环几次,就执行几次。
如果不想遍历列表,只想要一个递增的序列,可以用range函数配合使用:
for i in range(5): print(i)输出是0 1 2 3 4,注意还是从0开始,一共5个数字。如果想从1到5,就写成range(1, 6),左闭右开,含头不含尾。这个设计初看奇怪,习惯之后会发现写代码非常方便,比如要生成10个1到3之间的随机数,或者按行处理一个文件的前N行,都靠这个机制。
还有一种while循环,它更适合“不知道什么时候结束”的场景。比如做一个猜数字的小游戏,用户一直猜,猜对了才退出:
secret = 7 guess = 0 while guess != secret: guess = int(input("请猜一个数字:")) print("猜对了!")这里的while guess != secret表示:只要guess不等于secret,就不断重复执行循环体里的内容。一旦用户输入了7,条件不再满足,循环自然结束,接着打印“猜对了”。
while循环有一个常见风险是死循环。如果条件永远为真,程序就会一直卡在那里不结束。调试的时候遇到程序没反应,先检查循环条件有没有可能一直成立。
5. 新手最容易踩的报错和排查思路
5.1 环境与命令类报错
学习Python的头两周,我几乎每天都会在命令行里碰到“报错”。有些报错看起来很吓人,其实原因很简单。整理几个高频的:
'python' 不是内部或外部命令,也不是可运行的程序或批处理文件。这个提示出现在Windows命令行里,说明系统在环境变量里没有找到Python。解决办法前面说过,要么重装时勾选“Add Python to PATH”,要么手动配置环境变量。
pip 不是内部或外部命令。pip是跟着Python一起装的,正常情况下在命令行里直接输入pip就能用。出现这个提示,大概率是Python安装目录下的Scripts文件夹没有加到环境变量里。处理方式和上面一样,把Scripts目录路径补进Path里就行。
还有一种是“我已经装了Python,但命令行里显示的是另一个版本”。这种情况很常见,原因是电脑里存在多个Python版本,命令行找到的是旧的或者Anaconda自带的那个。不同的安装来源会在环境变量里产生冲突,输入where python可以看到命令行实际调用的是哪个路径。
| 报错信息 | 常见原因 | 处理办法 |
|---|---|---|
| 'python' 不是内部或外部命令 | 未加入PATH或安装异常 | 重新勾选Add Python to PATH并重装 |
| 'pip' 不是内部或外部命令 | Scripts目录不在PATH | 手动补全环境变量 |
| 命令行版本和预期不一致 | 多个Python共存 | 输入where python检查路径 |
| ModuleNotFoundError: No module named 'xxx' | 第三方库未安装 | 执行pip install xxx安装 |
5.2 语法与逻辑类报错
这类报错的位置通常精确到行号,报错信息也会给出具体原因,新手要养成“读最后一行”的习惯。报错信息里最下方的一段往往是关键。
SyntaxError: invalid syntax,这表示某个地方语法写错了。常见原因是引号或括号不匹配、少写了冒号、中英文标点混淆。排查技巧是在出错的代码行前后多看几行,定位到具体字符。
NameError: name 'xxx' is not defined,意思是“变量xxx没有被定义”。可能是拼写错误,也可能是变量在使用之前没有赋值。调试的时候先在代码里搜索这个变量名,看看是不是大小写写错了。
TypeError: can only concatenate str (not "int") to str,这是个典型的类型错误。我用一个案例来说明。你写了一句print("总价:" + total),其中total是一个数字,而字符串和数字用+拼接时Python会拒绝执行。解决办法是把数字转成字符串:print("总价:" + str(total)),或者直接用逗号print("总价:", total)。
IndexError: list index out of range,这是取列表元素时下标越界了。比如一个列表只有3个元素,合法下标是0、1、2,你却尝试取scores[3],程序就会抛这个异常。排查时先打印出列表的长度,再检查下标有没有超出范围。
5.3 读报错信息的通用技巧
很多初学者一看到控制台飘红就开始慌,其实报错信息是程序给你最靠谱的线索。我的习惯是三步走:第一步,看最底部的异常类型,搞清楚是哪一类问题,在这个阶段只需要记住几个常见的就行;第二步,看提示的文件名和行号,定位到具体代码;第三步,把那一行代码单独抽出来,在脑子里模拟一遍执行过程,检查变量值、类型和符号。
举个例子,报错信息是这样的:
Traceback (most recent call last): File "main.py", line 8, in <module> print("你好" + year) TypeError: can only concatenate str (not "int") to str第一眼看上去很长,但最有价值的是最后一行,它告诉你第行代码中,字符串 “你好” 试图和一个整数拼接,导致报错。再去看看year的结果,果然是从input里拿到的原样字符串,因为input返回的是字符串,但这里是year,说明year本身是字符串。等一下,我们假设year是从表单拿到的数字,经过转换后变成整数就会这样报错。所以要把整数用str(year)包一层,或者改回print("你好", year)。
这种读报错–定位–修复的流程,练习十次左右就会形成肌肉记忆。学习编程的第一关其实不是“写代码”,而是“面对报错不慌”。你处理报错的能力越强,学习效率就越高。
6. 我给初学者的几条经验总结
笔记写到最后,想说几句实际操作的体会。
第一,代码一定要亲自敲一遍,而不是“看会了”。我见过太多人收藏了大量教程,打开视频盯着看,感觉每一步都懂,真正自己写的时候却一行都敲不出来。看代码和写代码是两种能力,后者只能靠手敲练出来。
第二,遇到报错不要急着抄到搜索引擎里。先自己读一遍报错信息,试着找到问题所在。实在解决不了再把报错信息原样贴到搜索框里,一般都会有前人踩过同一个坑。直接搜“报错原文+自己的场景关键词”,比漫无目的地搜索高效得多。
第三,基础语法过完之后,尽快去做一个自己能用到的小项目。哪怕只是写一个自动整理桌面文件的脚本、做一个BMI计算器、写一个简单的记账程序都行。做项目才是把语法内化的过程。语法书读十遍,不如自己动手写一个小工具,遇见的每个报错都会变成真正的经验。
这篇笔记记录的是Python起步的完整过程,也是我自己真实花费时间走过的一条路。后续我会继续更新系列的下一篇,到时候往函数和文件处理这些方向再深入一层。