ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Python第一次作业全攻略:从环境搭建到避开新手坑

Python第一次作业全攻略:从环境搭建到避开新手坑 第一次Python作业听起来就是“hello world”打印完就完事但只要你真正交过一次就会发现事情远没那么简单。有的同学卡在环境搭建上有的同学代码能跑但一换台电脑就崩还有的同学被缩进错误折磨到怀疑人生。我当年第一次交Python作业用的是Windows记事本缩进全靠空格运行报错后对着屏幕看了半小时才发现是中文括号惹的祸。这篇文章就是把“第一次作业”背后那条完整的路——从装环境、选编辑器、啃语法、到写完能交的代码、再避开那些新手必踩的坑——全部给你捋一遍。适合正在学Python的零基础学生、刚入门想独立完成作业的自学者以及带学生的助教们参考。1. 第一次作业前先把环境折腾明白1.1 Python版本选择与安装步骤网上搜“python安装”你会看到Python 2和Python 3两个大版本。第一次作业直接选Python 3而且是当前最新的稳定版别碰Python 2那个已经是历史了很多新库都不再支持。到python.org官网下载对应系统的安装包Windows用户注意一个关键勾选安装界面第一页最下面有“Add Python to PATH”务必勾上。这个选项很多人忽略结果装完在命令行敲python提示不是内部或外部命令其实就是环境变量没配上。所谓PATH你可以理解成一张“通讯录”。系统要执行python命令时会按PATH里记录的目录挨个去找有没有python.exe。没把Python目录加进去就等于通讯录里没存这个号码系统当然找不到人。如果你安装时忘了勾选也可以手动补右键“此电脑”-属性-高级系统设置-环境变量在Path里新增Python的安装目录和Scripts子目录。macOS和Linux用户一般自带Python 3但版本可能偏旧建议用官方安装包或包管理器装新版。装完验证一下打开终端或命令行输入python --version如果输出了类似Python 3.12.1的版本号说明安装成功。这里要提醒一句有些电脑会同时存在Python 2和Python 3命令行里可能需要输入python3来启动Python 3。另外如果你用的是Anaconda这类发行版它自带Python和一大堆常用库省去很多单独安装的麻烦第一次作业用Anaconda也没问题它本质上就是个“全家桶”。注意Windows系统装Python时安装路径里不要带中文和空格比如别装在C:\Program Files或D:\软件\Python下否则后续某些库编译时会因为路径解析出幺蛾子。1.2 编辑器怎么选VS Code还是PyCharmPython代码用记事本写也能运行但效率太低等作业代码超过50行你就会发现没有语法高亮和自动补全的日子简直是在坐牢。第一次作业我推荐从VS Code入手免费、轻量、插件生态丰富。PyCharm也很好但社区版功能对新手足够专业版要收费而且启动比VS Code重不少如果你电脑内存紧张VS Code会更友好。VS Code装好之后需要装一个Python扩展扩展商店搜“Python”作者是Microsoft的那个。装完打开一个.py文件按CtrlShiftP输入Python: Select Interpreter选择你刚安装的Python解释器。这一步很关键不选解释器的话VS Code虽然能写代码但运行、调试、语法提示全都用不了你会以为是自己代码写错了其实是解释器没选对。PyCharm用户则在设置里找到Project Interpreter同样指定Python路径就行。第一次作业阶段编辑器不需要装太多花哨插件一个Python扩展加上一个自动保存设置就够用了。等你后面写爬虫、做数据分析再慢慢加插件不迟。1.3 虚拟环境现在不做以后会后悔第一次作业可能只用到Python自带的库不涉及第三方库但你要知道有一个东西叫虚拟环境。它的作用是为每个项目单独维护一套依赖库互不干扰。想象一下你有一个项目A需要numpy 1.24另一个项目B需要numpy 2.0如果都装到全局环境里就会互相打架。虚拟环境就是给每个项目开一个独立的“小房间”A项目装1.24B项目装2.0互不干扰。创建虚拟环境的命令很简单在项目文件夹下打开终端执行python -m venv venv这会在当前目录下生成一个venv文件夹里面装着一套独立的Python解释器和pip。激活它Windowsvenv\Scripts\activatemacOS/Linuxsource venv/bin/activate激活后终端前面会出现(venv)字样这时候你再用pip安装任何库都只会装进这个虚拟环境里。第一次作业虽然可能用不到但早点养成这个习惯后面做项目、装各种第三方库时能省下大量排错时间。2. 作业背后的基础语法你必须掌握的核心5块2.1 变量与类型Python的“贴标签”式赋值第一次作业里你大概率会写类似a 1这样的代码。Python的变量和其他语言不太一样它更像“贴标签”a 1的意思是创建一个整数对象1然后把标签a贴到它身上。你之后写a hello并不是把a这个盒子里面的内容换掉而是把a这个标签撕下来贴到新的字符串对象上。所以Python的变量本身没有类型类型属于对象。这一点在作业里常见的坑就是类型转换。比如你用input()接收用户输入得到的永远是字符串类型哪怕用户输入的是数字18它也是字符串18。这时候如果你直接拿它去做数学运算就会报错。第一次作业里经常要写“输入一个数字求它的平方”正确写法是num input(请输入一个数字: ) num int(num) # 字符串转整数 print(num * num)Python的类型转换常用这几个int()转整数、float()转浮点数、str()转字符串、list()转列表。还有一个容易忽视的细节字符串和整数不能直接用加号拼接比如结果: 42会报错应该写成结果: str(42)或者直接用f-stringresult 42 print(f结果是{result})f-string是Python 3.6之后引入的格式化方式用花括号把变量嵌进字符串里方便又直观。第一次作业建议直接学会它比用%s或format()更省事。2.2 条件判断与循环程序的“岔路口”和“跑圈”作业里只要涉及逻辑就离不开if和for。if的语法核心是“条件后面加冒号下一行必须缩进”。score 85 if score 90: print(优秀) elif score 60: print(及格) else: print(不及格)很多第一次写作业的同学会在elif这里卡住其实elif就是“else if”的缩写意思是“上面的条件不满足再看看这个条件”。这里要特别注意缩进Python用缩进来表示代码块同一个代码块里的缩进必须一致。Tab和空格不能混用否则会报IndentationError。VS Code里默认按Tab键会插入4个空格你可以在右下角看到“空格:4”的提示用空格就统一用空格别一会儿Tab一会儿空格。循环分两种for适合遍历while适合不知道循环次数的情况。第一次作业最常见的for用法是配合range()for i in range(5): # 输出0到4 print(i)range(5)生成0到4的整数序列range(1, 6)生成1到5range(1, 10, 2)生成1、3、5、7、9步长为2。这个range函数的三个参数是“起点、终点、步长”终点是不包含的很多同学栽在range(1, 5)到底输不输出5这个问题上。记住前闭后开包含起点不包含终点。while循环要注意设置退出条件否则就是死循环程序一直跑不停止。迫不得已时可以按CtrlC强制中断。2.3 列表、字典与字符串操作作业里80%的时间在跟它们打交道我第一次做Python作业时发现大部分时间不是在写逻辑而是在和列表、字典、字符串“搏斗”。列表用方括号可以装任意类型fruits [apple, banana, cherry] print(fruits[0]) # apple索引从0开始 print(fruits[-1]) # cherry负数表示从后往前数 fruits.append(orange) # 往末尾加一个元素字典用花括号存的是“键值对”student {name: 张三, age: 20, score: 88} print(student[name]) # 张三 student[age] 21 # 修改值 print(student.get(grade, 不存在)) # 不存在可以给默认值字符串是新手最容易搞混的一块。input()读进来的是字符串想要把一串数字拆开就得用split()data 1 2 3 4 5 nums data.split( ) # 按空格分割得到列表 print(nums) # [1, 2, 3, 4, 5]作业里经常是“输入一串以空格分隔的数字求它们的和”写法就是上面这个思路先split得到字符串列表再逐个int()转换最后求和。join()则是反着来的把列表拼成字符串比如,.join([a, b])得到a,b。2.4 函数的定义与调用让代码能“复用”第一次作业的代码可以不写函数但如果你写了就会发现自己代码的层次瞬间清晰了。函数的定义用defdef add(a, b): return a b result add(3, 5) print(result) # 8函数的核心价值是“复用”和“抽象”。你把这个逻辑封装起来以后每次需要算两个数相加直接调用就行不用重新写一遍。封装函数还能帮你把一个大问题拆成若干小问题比如一个统计字符频率的作业可以拆成“读取文本”“统计频率”“排序输出”三个函数每个函数只干一件事这样既好写也好调试。写函数时要特别注意返回值。有些同学写了print()就以为函数返回了结果其实print只是把内容打印到屏幕上函数返回的是None。如果外面拿这个函数的结果继续做运算就会报TypeError。第一次作业里最典型的错误就是def add(a, b): print(a b) # 这里是打印不是返回 result add(3, 5) 1 # 报错因为add返回None正确写法是把print(a b)改成return a b。这一点建议在第一次写函数时就刻进脑子里。3. 一次完整的作业实操从题目到能跑的代码3.1 题目拆解别急着写代码先把逻辑想清楚我拿一道我见过很多次的经典作业题来演示这道题几乎是所有Python初学者的共同记忆“从控制台输入一串以空格分隔的数字统计每个数字出现的次数按出现次数从高到低输出”。这道题第一次见到会觉得无从下手但你把它拆开就清晰了读取用户输入的字符串按空格分割成列表遍历列表统计每个数字出现的次数按次数排序输出结果写代码之前先在草稿纸上或注释里把这个流程写出来你会发现整个程序其实就是这5个步骤的翻译。很多同学拿到题目就上手写代码写着写着发现自己漏了“排序”这个需求或者输入格式一变就崩了。先拆解的好处是你能提前发现边界情况比如用户输入了连续两个空格怎么办用户输入了非数字字符怎么办用户没输入直接回车怎么办3.2 一步步写代码把思路翻译成Python按照拆好的步骤第一步是读取输入data input(请输入一串数字用空格分隔: )第二步分割字符串items data.split()这里split()不带参数时会自动按任意空白字符空格、Tab、换行分割还能自动处理连续空格的问题比split( )更稳健。这是一个小技巧很多教程不会特意讲但在实际作业里很管用。第三步统计每个数字出现的次数。可以用字典来存counter {} for item in items: counter[item] counter.get(item, 0) 1这里用到了字典的get方法如果键不存在就返回0然后加1。这段代码就一行但包含了“读取、判断、更新”三个动作。新手容易写成if item in counter: counter[item] 1 else: counter[item] 1这两种写法效果一样但get的写法更简洁。第一次作业你两种都该看懂至少得知道自己写的代码在干什么。第四步按次数排序。这里涉及到一个稍微进阶的语法——sorted函数配合“键”参数sorted_items sorted(counter.items(), keylambda x: x[1], reverseTrue)counter.items()返回的是“键值对”的列表每一项是一个元组比如(3, 2)。keylambda x: x[1]意思是“以每一项的第二个元素次数作为排序依据”reverseTrue表示降序。如果你看不懂lambda可以理解成“给排序函数指定一个规则取元组的第二个元素作为比较大小用的值”。这是第一次作业里最烧脑的一行但也是含金量最高的一行。第五步输出结果for num, count in sorted_items: print(f{num}: {count}次)完整代码合并起来就是data input(请输入一串数字用空格分隔: ) items data.split() counter {} for item in items: counter[item] counter.get(item, 0) 1 sorted_items sorted(counter.items(), keylambda x: x[1], reverseTrue) for num, count in sorted_items: print(f{num}: {count}次)我建议你亲手敲一遍这个代码不要复制粘贴。第一次写Python作业敲每一行代码的过程都是肌肉记忆的训练尤其是标点符号——:、()、这些一定是英文半角符号。中英文标点混用是新手报错的重灾区有时候你在Python里写了中文冒号程序直接给一个SyntaxError你还一脸茫然不知道哪里错了。3.3 调试与自查怎么把“报错”变成你的朋友代码写完不一定能一次跑通第一次作业能一次通过的很少。遇到报错不要慌读报错信息的最后一行那里会告诉你错误类型和出错的行号。这是我总结的常见报错速查表报错类型含义常见原因SyntaxError语法错误中英文标点混用、少了冒号、括号没闭合NameError名称未定义变量拼写错误、用了没定义的变量、引号没闭合TypeError类型错误字符串和整数做运算、调用函数时类型不匹配IndexError索引越界访问列表不存在的下标KeyError键不存在访问字典里没有的键IndentationError缩进错误Tab和空格混用、缩进不一致排查报错时最笨但最有效的方法是“print大法”在关键位置打印变量看它是不是你预期的值。比如统计次数之前先print(items)看看分割后的列表对不对。这个土办法在刚入门阶段比任何调试器都好用简单直接。等你熟练了再去研究VS Code的断点调试功能不迟。我还想分享一个搜索报错的技巧把报错信息原封不动复制到搜索引擎里搜索大概率能在前几条结果里找到答案。但要注意搜索结果里如果是英文论坛耐心看英文或者用翻译工具辅助国内的CSDN、知乎、博客园也有一大堆踩坑记录。学会搜报错信息比背语法书重要的多。4. 第一次作业最常踩的坑我帮你提前排掉4.1 环境相关运行环境异常、pip安装失败先说一个最常见的场景你在自己电脑上写好了代码按F5运行结果VS Code下方终端提示“python不是内部或外部命令”。这个问题我在前面讲安装时提过就是环境变量没配对。解决方法是重新运行Python安装包选择“Modify”把“Add Python to PATH”勾上或者手动去环境变量里添加Python的安装目录。另一个常见问题是pip安装库时特别慢或者直接超时失败。第一次作业虽然不太可能用到第三方库但你可能想安装一个测试小游戏的pygame或者装个jupyter notebook来写作业。pip默认源在国外国内网络环境下容易失败解决方法是换成国内镜像源pip install pygame -i https://pypi.tuna.tsinghua.edu.cn/simple清华、阿里、豆瓣都有PyPI镜像随便选一个速度都比较理想。如果想永久换源可以执行pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple还有Windows上双击.py文件直接闪退的问题那也是不正常的说明脚本运行完立刻退出了。第一次作业阶段建议永远在编辑器里运行代码别去双击文件这样可以实时看到终端输出和报错信息。如果非要双击也能看到结果可以在代码最后加一个input()作为暂停但这是治标不治本的方法不推荐。4.2 编码与缩进看着没问题却报错编码问题几乎每个Python新手都会遇到特别是代码里写了中文注释或中文字符串时运行报UnicodeDecodeError。Python 3默认源码编码是UTF-8但Windows下的某些编辑器可能默认用GBK保存文件就会造成编码不一致。解决方法是在VS Code右下角把文件编码改成UTF-8或者统一用支持UTF-8的编辑器。在代码文件第一行写上# -*- coding: utf-8 -*-是Python 2时代的写法Python 3已经默认UTF-8了写不写都行。缩进问题也隐蔽。有些同学从网页上复制代码粘贴进编辑器后发现所有缩进都变成了Tab而原来代码有的是空格运行时报IndentationError。VS Code里有一个快捷键CtrlShiftP输入“Convert Indentation to Spaces”一键把Tab转成空格。这个技巧我看到很多老手都在用对初学者尤其有效。写代码的原则就是千万不要混用Tab和空格所有缩进统一用4个空格。4.3 语法细节新手最容易写错的地方我来盘点几个第一次作业里特别容易踩的语法细节一是赋值和比较的等号。是赋值是判断相等。很多同学在if条件里写一个等号比如if a 3:Python会报语法错误因为不能用在条件表达式里。二是有时候一边打算用列表[]存数据一边写成元组()或者集合{}导致后面调用方法时报错。列表可以修改元组不可修改集合不能有重复项。第一次作业里如果没有特殊需求默认用列表就行。三是input()输入的数据类型。我前面反复强调过input()返回的一定是字符串。有的同学写加法程序直接把input()的结果加起来得到的是字符串拼接而不是数字相加比如12 34得到1234而不是46。这个坑很经典几乎每个Python老师都会在作业批改时看到一次。四是print函数里逗号和加号的区别。print(a , a)和print(a a)如果a是字符串结果看起来差不多但加号要求两边类型一致如果a是整数加号写法会报TypeError而逗号写法会自动帮你转成字符串。4.4 提交作业前的检查清单作业写完不是能跑就完事了交之前建议按下面这个清单过一遍代码能不能在干净环境下运行如果别人拿到你的.py文件用Python直接执行会不会因为缺少某个库而报错。第一次作业一般只用到内置库问题不大但如果用了第三方库记得写清楚依赖。代码有没有能跑但不符合题意的隐患比如题目要求“按出现次数从高到低”你只统计了次数没排序或者排序后是升序而不是降序。边缘输入会不会崩输入为空、输入了多余空格、输入了负数、输入了超大数这些情况会不会报错。如果题目没有特殊要求至少要在代码里对空输入做个友好提示。命名是否规范变量名用英文不要用a、b、c这种没有语义的名字至少用num、score、counter这样的词。函数名用动词开头比如calc_average、get_user_input。有没有加注释第一次作业不要求注释多详细但关键步骤建议写一两句说明这既是给老师看的也是给自己以后看的。我自己的习惯是“函数开头写一句用途复杂逻辑前面写一句思路”。5. 作业交了之后下一步怎么往前走第一次作业通过之后你就可以从“Hello World”毕业进入真正能写点小玩意的阶段了。我见过太多人把第一次作业当成全部交完就丢其实第一次作业的完整流程——拆题、写码、调试、交作业——才是你真正应该带走的东西。接下来可以试着做几个小练习练手比如写一个简单的计算器支持加减乘除和括号或者写一个猜数字游戏让程序随机生成一个1到100之间的数用户猜程序提示“大了”或“小了”再比如那个经典的“李白打酒”问题用循环和条件判断就能解是锻炼逻辑的好题目。这些都不需要第三方库只需要Python基础语法加一颗愿意折腾的心。等你把这些小练习写顺畅了再往前走的路就看兴趣了想做自动化办公的可以学openpyxl操作Excel对网络感兴趣可以学requests和BeautifulSoup写个爬虫喜欢数据分析可以学numpy、pandas和matplotlib对游戏有兴趣pygame能帮你实现很多小游戏。我第一次作业做完之后自己写了个判断回文数的小程序虽然只有十几行但那会第一次感受到“用代码解决问题的快感”这种快感会推着你继续学下去。最后分享一个我自己的经验遇到不会的问题先自己琢磨10分钟再搜索20分钟实在不行再问别人。这个过程里你搜索资料的路径、看报错信息的敏锐度、试错的耐心都会慢慢变成你真正的编程能力。第一次作业只是个开始编程这条路很长但第一步跨出去后面就会越来越顺。
返回列表