ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Python新手从零入门:环境配置、变量类型与第一个脚本全记录

Python新手从零入门:环境配置、变量类型与第一个脚本全记录 小宇是我一个朋友家的孩子刚上大一专业和计算机没什么关系但最近铁了心要学Python。他跑来问我第一句话就是“哥我下载了Python然后呢”这个问题其实特别典型——大部分新手不是被语法难倒的而是卡在“装完了不知道干嘛”“写了两行报错看不懂”“照着教程敲代码结果和教程长得不一样”这三件事上。所以我决定干脆陪他走一遍完整的入门过程从装环境到跑通第一个程序再到理解变量和类型这些基础概念全程记录下来。这篇就是“小宇学Python”系列的第一篇主要解决从零到能写出第一个完整小脚本这件事。如果你也是刚接触Python或者装了好几次Python但一直没真正用起来这篇应该能帮你把地基打牢。1. 在装Python之前先把三件事想清楚小宇一开始的操作是直接去搜索引擎搜“Python”然后点进一个看起来很像官网的网站下载了一个不明所以的安装包。被我拦下来之后我先让他搞清楚三个问题。1.1 Python版本怎么选3.8还够用吗现在去官网能看到Python已经出到3.12以上了但网上大量教程、公司内部老项目还在用3.8、3.9。小宇问我到底装哪个我给他的建议是新学者直接用最新稳定版千万别装3.8以下的版本。原因其实不复杂。Python 2早就停止维护了现在网上你能找到的绝大多数库和新教程都默认Python 3。而在Python 3内部版本越新语法支持越完整比如match语句、更友好的报错提示都是新版本才有的。你用3.8写出来的代码大概率能在3.12跑但反过来用3.12的新特性写的代码在3.8上可能直接报语法错误。另外还有一个实际原因很多第三方库开始要求Python 3.9以上的版本你装个3.8回头装库的时候会发现一堆警告甚至安装失败。没必要给自己添堵走最新稳定版就行。1.2 编辑器用哪个别一上来就上IDE小宇第二件事是问我“要不要装PyCharm”。PyCharm是很优秀的Python IDE我工作里也经常用但它对新手的第一个问题不是难用而是信息太密。一个刚学会print(hello)的人打开PyCharm满屏的快捷键提示、配置项、工程文件树很容易产生“我是不是还不会用这个工具”的挫败感。我给小宇的安排是分阶段走前两周用VS Code把界面调简洁只装Python扩展专心学语法本身等能独立写50行以上的小脚本了再换PyCharm或继续用VS Code都行那时候你能看懂IDE在帮你干什么了效率才提得上来。如果你连VS Code都嫌重直接用IDLE也行——Python安装包自带的一个极简编辑器写了代码直接F5运行零配置缺点是代码提示几乎没有超过20行的代码就有点费眼了。1.3 “安装成功”到底是什么意思很多新手装完Python之后看到桌面上多了个图标就觉得自己装好了。其实判断是否安装成功有一个硬指标打开命令行Windows叫命令提示符或PowerShellmacOS叫终端输入python能进入一个带提示符的交互环境。为什么强调这个因为Python安装的本质是把解释器放进你的系统里那个蓝色图标的“IDLE”只是附带的记事本运行器。你后面用VS Code写代码本质也是让VS Code调用你系统里的Python解释器去跑你的.py文件。如果解释器没装好编辑器装得再漂亮也没用。提示装完Python后记得把“Add Python to PATH”这个复选框勾上。这是新手最容易栽跟头的一步如果忘了勾命令行里输python会直接提示“不是内部或外部命令”。后面我会详细说这个问题。2. 实操Windows和macOS各自的完整安装步骤为了不让你们看完上面那段还是不知道鼠标往哪点我直接按系统把小宇装环境的过程写一遍。我自己主力机是Windows拿小宇那台Windows笔记本走了一遍后面又用我自己的macBook Air验证了一遍两边都跑通了。2.1 Windows安装路线图第一步打开Python官网python.org把鼠标悬停在顶部的Downloads菜单上它会自动识别你的系统并给出一个大大的黄色按钮写着“Download Python 3.x.x”直接点。第二步重点来了。双击安装包之后第一个界面最下面有一个复选框“Add Python to PATH”一定要打勾。然后再点“Install Now”。这一步的作用是告诉Windows你要把Python的执行路径写进系统环境变量里这样以后你在任何目录下打开命令行都能直接敲python命令。第三步等待进度条走完然后立刻验证。按下Win R输入cmd回车在黑色窗口里输入python --version如果显示类似Python 3.12.4说明安装成功。接下来再输入python看到就说明你进入了Python交互模式可以在这里面直接写代码。退出交互模式的方法是输入exit()然后回车或者按Ctrl Z再回车。小宇第一次装的时候没勾PATH验证的时候系统提示“不是内部或外部命令”后来我让他重新跑了一遍安装包选择“Modify”在下一步里手动勾选了“Add Python to PATH”问题才解决。这里多说一句遇到这种问题别慌不需要重装系统只需要把Python安装目录一般类似C:\Users\你的用户名\AppData\Local\Programs\Python\Python312\和它的Scripts子目录手动填进环境变量的Path里效果一样。2.2 macOS安装的两种方式macOS这边其实有三种装法我推荐用官网安装包或者Homebrew看你的情况选。最省心的是官网安装包。同样是进python.org下载macOS版双击.pkg文件一路“继续”就行。装完打开终端输入python3 --version注意macOS上因为历史原因python命令可能还指向系统自带的Python 2或干脆不存在所以要敲python3。如果你希望以后敲python也能直接进入最新版可以在终端里配置别名但新手阶段没必要折腾老老实实用python3避免和你电脑里可能存在的旧版本起冲突。用Homebrew装也简单先在终端执行/bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)装好Homebrew然后brew install python这种方式的好处是后续装别的开发工具比如Node.js、Git也用得上坏处是那个安装脚本可能因为网络原因比较慢。你按自己的网络情况取舍就好。2.3 装完VS Code并把编辑器连上Python这一步是整个环境配置里最容易被忽略但最关键的。VS Code默认只能当记事本用不告诉它Python在哪它就不会给你任何代码提示和报错高亮。在VS Code左侧扩展商店里搜索“Python”选择那个发布者是Microsoft的扩展安装。然后随便新建一个.py文件写一行print(hello)VS Code右下角或底部状态栏会出现一个Python版本号你点它选择刚才装好的解释器就关联成功了。关联成功后会有什么变化第一你写pri的时候会自动弹出print补全选项第二写错单词下面会出现红色波浪线第三右上角会出现一个三角形的运行按钮点一下就能直接跑当前文件。这三样对于新手来说体验的提升是立竿见影的。注意VS Code弹窗提示安装“pylint”“ruff”之类的时候直接同意就行。语法检查工具能帮你把很多低级错误在运行之前就拦住。3. 小宇的第一个脚本不只会print还要理解print环境装好之后的小宇特别兴奋按照教程敲了个print(hello world)跑通了然后问我“然后呢”我相信这也是很多自学者卡住的第一道坎——会打印一句话之后不知道下一步该干嘛。我的想法是第一课不要急着讲循环和函数先用几个简单例子让新手理解程序是怎么一步一步执行的以及print到底在干什么。3.1 从print到变量程序就是按顺序执行的口令我让小宇写了这样一段代码print(程序开始) print(大家好我是小宇) print(程序结束)我说“你现在猜一下运行之后这三行会以什么顺序出现在屏幕上”小宇说肯定是先出现“程序开始”最后出现“程序结束”。我让他运行果然如此。这个看似废话的结论其实是编程最底层的逻辑代码是从上到下逐行执行的口令列表。你写什么它就执行什么顺序就是你写的顺序。很多人学编程卡在“为什么我的程序不按我想的运行”往往就是没理解这一点。然后我们引入变量。我让他改了代码name 小宇 age 19 print(大家好我是 name) print(今年 age 岁)运行之后第二行报错提示can only concatenate str (not int) to str。我问小宇能不能看懂他说大概意思是“不能把字符串和整数拼在一起”。对这就够了。我们借此引出了第一个基础概念Python里的数据是有类型的数字和文字不能直接往一个加法里塞。修正方案有两个。第一个是用str()把数字转成字符串print(今年 str(age) 岁)第二个是用f-string这也是我更推荐新手养成习惯的写法print(f大家好我是{name}) print(f今年{age}岁)f-string的规则很简单在引号前面加个小写f然后字符串里需要插入变量的位置用大括号包住变量名。代码更短也不会搞混类型。我给小宇说以后你自己写脚本输出内容涉及变量一律用f-string保证少踩一半的坑。3.2 交互式运行和保存成文件的区别小宇后来发现自己把代码写在IDLE里按F5运行能出结果但在命令行输python进去一个个敲敲一行出一行结果这让他有点困惑“我到底该用哪种方式”我说两种方式对应两种典型的用法。命令行里的模式叫交互式环境REPL适合临时算个东西、试个语法、验证一个小想法比如你懒得开文件就进来看一眼2 ** 10等于多少。而写.py文件再运行才是正经做事的方式——文件可以保存、修改、复用代码长了也不可能一行行在交互环境里敲。判断标准很简单如果你这次只是想“试一下”用交互模式如果你打算“写一个自己能反复用的小工具”就新建文件写代码然后运行。学编程百分之九十九的时间是在操作文件交互模式只是个临时草稿纸。3.3 给你的第一个脚本加个“人味”很多教程第一课到这里就结束了但我还是多带小宇走了一步让程序能问用户问题并根据回答做不同的事。这一步会用到input()代码很短name input(你是谁) print(f你好啊{name}欢迎来到Python的世界。)input()的作用是让程序停下来等待用户在终端里输入文字然后把输入的内容赋值给name这个变量。注意无论用户输入的是数字还是文字input()返回的一定是字符串所以如果后面要拿它做数学运算需要用int()或float()转一下。小宇跑完这段兴奋点来了“这有点意思了程序好像能和我对话了。”是的这就是交互的雏形。一个感知输入、处理信息、给出输出的闭环其实就是一个程序的完整结构。不管多复杂的软件拆到最底层也是这个逻辑。4. 基础语法必须吃透的四个小块环境跑通、有了第一个交互示例之后小宇问我那我接下来是不是可以直接去学爬虫、学数据分析我跟他说你先别急爬虫和数据可视化再好玩也是建立在你能随意操作数据的基础上的。基础语法的四个小块今天必须过一遍。4.1 变量命名不是随便起的Python允许你用英文、数字、下划线给变量起名但有几个规则不能以数字开头1name是错的name1是OK的不能包含空格和连字符比如my-name会报语法错误不能用Python保留字比如if、for、while这些词是语法的一部分不能拿来当变量名。更重要的是养成可读性优先的命名习惯。我让小宇做个小练习定义一个变量存放你的出生年份他顺手写了个a 2006。我说这个a过两周你自己回来看都不知道是啥改成birth_year 2006虽然多了几个字符但信息量完全不同。4.2 类型转换是新手最容易踩的坑前面print那段已经出现了一次类型问题。这里把类型转换的常用方法一次说清int()把字符串或浮点数转成整数注意int(3.14)会报错得先float(3.14)再int()float()转成浮点数小数str()转成字符串任何类型基本都能转bool()转成布尔值这里有个经典坑bool(False)是True因为非空字符串都是真只有空字符串bool()才是False。我让小宇写了这样一段小代码验证这些转换age_str input(请输入你的年龄) age_int int(age_str) next_year age_int 1 print(f明年你就{next_year}岁了)这段代码虽然只有四行但完整覆盖了“输入—转换—运算—输出”四个环节。能独立理解这段代码的人才算真正过了变量和类型这一关。4.3 列表和切片Python最实在的一个特性Python的列表list基本可以理解成一个有序的柜子里面可以放任意类型的东西fruits [苹果, 香蕉, 梨, 西瓜] print(fruits[0]) # 苹果 print(fruits[-1]) # 西瓜负数索引表示从尾部往前数 print(fruits[1:3]) # 切片取索引1到2结果是[香蕉, 梨]切片这里小宇一开始没绕明白为什么[1:3]取到的是第2和第3个元素不是第2、3、4个。我给他打了个比方切片规则是“起点在1终点在3但3本身不包含”就把右侧当成一个不关门的边界走到3门口但不进去。这样理解[:2]取前两个、[::2]隔一个取一个都顺理成章了。4.4 条件判断让程序学会见机行事有了变量、类型、列表再加上if你的程序才真正有了“逻辑”。小宇第一次写条件判断的时候犯了个经典错误if score 80: # 错这是赋值是赋值才是判断相等。这个细节几乎每个新手都会错一次。正确的写法是score 80 if score 60: print(恭喜你及格了) elif score 90: print(优秀) else: print(下次再加油)顺带一提这个例子还有一个小坑在逻辑顺序上因为90 60也是成立的所以如果你把score 90的判断放在最前面才符合预期否则永远轮不到“优秀”这条分支。这一点比语法本身更重要——分支的顺序就是判断的优先级你得先想清楚哪件事要先下结论。5. 小宇的真实翻车现场报错信息这么读才对学编程的一个铁律是报错不可怕读不懂报错才可怕。小宇在练习过程中一共产生了三类报错我把它们原原本本记下来每个都说说怎么定位和修复。5.1 SyntaxError代码“读不通”小宇的代码print(hello运行后报SyntaxError: ( was never closed。这个报错的意思是“这一行有个括号没闭合”。Python看到引号字符串hello后面没有右括号)就直接到了末尾它不知道该怎么继续干脆告诉你“我读不下去了”。遇到这类错误解决方法是先看行号提示再看光标停留在哪个位置附近缺括号补括号缺引号补引号。关键心法是别怕报错报错就是Python在打手电筒帮你找问题。5.2 NameError名字没定义这是小宇把变量名拼错时遇到的print(nmae)报错NameError: name nmae is not defined。字面意思就是Python认不出nmae这个东西。定位思路是检查两点变量是不是拼错了变量是不是在它赋值之前就被使用了。Python的变量在赋值之前是不存在的所以你用了第20行才定义的变量在第10行用一样会报这个错。给大家一个小技巧报错信息会精确到文件名、行号、出错的名称它就是最直接的定位器。读报错不是从头读先看最后一行“什么类型的错具体名字”再向上翻找出错的那一行。5.3 TypeError两种类型“合不来”这个我们前面遇到过了字符串和整数不能直接相加。小宇实际踩坑的代码是count 5 print(剩余次数 count)报错信息是can only concatenate str (not int) to str。这类错误的高频出现时间是在新手开始处理用户输入之后因为input()返回字符串而用户输的数字默认是文字你要参与数学运算必须先int()一下。我给小宇一个参考顺序遇到TypeError先看两个操作数的类型分别是什么可以用type()函数打印验证再看它们能不能兼容不兼容就先转换类型再做操作。5.4 报错之后的心态调整我跟小宇说一句很实际的话你写的每一个程序在整个开发过程里真正“一次跑通”的概率几乎为零。老程序员的日常也不过就是“写—跑—报错—改—再跑”这个循环只是他们改得快而已。所以你第一次遇到报错时不要怀疑自己是不是不适合学编程那不是智商问题那是所有程序员的日常。怎么提升改错速度两个建议。第一报错信息的关键词用搜索引擎搜中文搜不到就英文搜绝大多数错误都能搜到解决方案第二自己学会“二分定位”——注释掉一半代码跑一次看报错还在不在以此判断出错范围缩小搜索半径。6. 第一课该做个什么小项目就用当天的知识点写个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(体重正常) elif bmi 28: print(体重偏重) else: print(肥胖范围)首先说明这里的参考值用的是国内常用标准具体标准大家可以根据自己的了解调整重点是这个项目覆盖的语法点。逐行拆解第一行float(input(...))两个函数嵌套用内层input()先弹输入框外层float()把用户的字符串转成小数。身高体重的BMI公式要求的是小数用int()会出错所以这里必须用float()。第二行同理。第三行是计算height ** 2表示身高的平方指数运算用双星号新手容易写成height^2那是按位异或跑出的数会完全不对。第四行{bmi:.2f}是f-string的格式化语法意思是把bmi这个数保留两位小数输出。不加这个的话结果可能变成一长串小数。后面就是条件判断的四档划分。注意elif的顺序 18.5最先判断然后是 24这样判断是安全的。如果反过来先判断 24BMI为17的人会直接落到“体重正常”因为17也是小于24的。这个顺序问题的本质和前文讲的score 90那个坑是一回事——条件判断的先后顺序决定了逻辑优先级要从窄到宽、从特殊到一般来编排。小宇运行时我观察到一道小坎他在命令行里输入身高后自己把单位“1.75米”一起打进去了结果float(1.75米)直接报错ValueError: could not convert string to float。这正好又复习了一遍类型转换的话题float()只认数字格式的字符串带中英文的单位符号一概不认。这也提示我们如果做一个给别人用的程序输入提示要写清楚格式甚至要做异常处理不过那是后面try except的功课了第一课不做扩展。这个小项目跑通之后小宇问我“这东西有什么实际用吗”我说你是觉得它太简单了吧我让他反着想一个问题如果明天产品经理让你做一个“给一万个人用”的BMI计算器你至少要再考虑哪些事比如用户输入负数怎么办输入0怎么办用户输入超大的数怎么办这么一问他立刻意识到了——写一个自己能跑的脚本和写一个别人能用的工具之间差的不是代码量而是对边界情况的考虑。这个意识从第一课就开始建立后面学函数、学异常处理的时候你会发现自己比同龄人更容易理解“现实世界的代码长什么样”。我对小宇说的是这一篇不要贪多。今天你只要真的做到三件事——装好环境、跑通第一个交互小程序、理解变量和类型是怎么一回事就已经走完了很多人学编程半途而废之前最艰难的一段路。下一篇我们正式开始啃语法硬骨头循环结构、函数定义、还有怎么把你的脚本从“写完就丢”变成“能反复调用”的小工具。顺便说一句小宇在练习里已经不止一次问我“函数到底干嘛用的”这事确实值得单独开一篇好好说。
返回列表