Python第一次作业,听上去是整个编程生涯里最简单的一份作业。但我这几年看到的实际情况恰恰相反,很多人的Python学习之路不是终结在期末大作业,而是终结在第一份小作业上。作业内容本身不复杂,要么让你print一句话,要么让你做个简单计算,真正的拦路虎全是环境问题:装了解释器却在命令行里找不到python,写好了代码却报缩进错误,装第三方库又卡在下载上。这篇文章就围绕Python第一次作业,把从环境准备到跑通代码、再到调试和打包的完整经验梳理一遍。不管你是完全零基础,还是已经能看懂一点代码,按着这份思路走,第一份作业基本能稳稳交掉。
1. 第一次作业不是输出"你好世界",而是环境就绪
1.1 老师在作业里藏的三个考点
很多同学拿到Python第一次作业时,第一反应是"这也太简单了"。比如老师让你写一个程序,输出"Hello, Python",或者接收用户输入再打一句招呼。看起来就是两三行代码的事,可每年都有相当一部分人卡在这一步。我看过太多作业现场,真正让人翻车的往往不是代码本身,而是三个容易被忽视的问题:环境能不能跑、报错能不能看懂、结果对不对得上预期。
第一点是环境。作业里写的代码最终要靠Python解释器运行,如果你的机器上压根没有装Python,或者装了解释器但编辑器选错了版本,代码就算写得再对,一运行也是满屏报错。第二点是报错信息。新手最常见的习惯是看到红色的英文提示就慌,然后直接截图发群里求助,其实很多报错只要认真读一遍,答案已经写得很清楚了。第三点是对结果的理解。你print出来的东西到底对不对,不仅要看有没有报错,还要自己去验证,比如做一个"输入两个数求和"的题,你就得自己输入几个数去核对输出结果。
所以我的观点是,第一次作业其实是一次"编程前体检"。它让老师和你自己都确认一遍,后续学习需要的工具链是否已经完整。认真对待它,后面很多痛苦都能避免。这也是我把这篇文章的重点放在环境、常见报错和基础代码上的原因,希望帮你把第一关稳稳过掉。
1.2 交作业前,先跑通这条完整链路
我第一次接触Python的时候,走了特别多弯路。当时听人说"写Python只要有记事本就行",于是真的用记事本写了代码,保存成.py文件,然后双击,结果一闪而过,什么都看不到。后来才知道,Python代码需要解释器去执行,而且从编写到运行至少要经过一套完整的链路。这套链路我建议每个第一次交作业的人都在动手前确认一遍:安装Python解释器,配置环境变量,安装编辑器,在编辑器里绑定正确的解释器,新建.py文件,最后点运行。
听起来麻烦,但全套做下来也就是十几分钟的事。很多同学是拿到作业后直接打开编辑器开始敲代码,敲到一半发现运行不了,再回头折腾环境,心情已经崩了一半。我个人的建议是,拿到作业的第一天先不做题,先把这条链路跑通,哪怕只是输出一个最简单的"hello"也算成功。等环境稳定了,再开始写作业内容,效率高很多。而且这套环境以后所有课都会用到,这次配好,后边能省下大量时间。
2. 第一次Python作业的环境搭建:安装、编辑器与两个高频坑
2.1 版本选择与安装时最关键的一个勾选
Python的安装看起来是下载、双击、下一步,但恰恰是这几个步骤里藏着最容易踩的坑。首先是版本选择。说实话,对第一次做作业的同学来说,版本不用太纠结,去Python官网下载最新的稳定版就行。所谓稳定版,是已经发布一段时间、各种问题修得差不多的版本,不是那种刚出预览版的测试版本。如果你用的是课程配套资料,最好先看看讲义里要求的是3.8还是3.11,尽量匹配老师的环境,避免因为版本特性差异导致某些代码和讲义结果不一样。
然后是安装界面里的一个勾选项:"Add Python to PATH"。这一步一定要勾上。很多同学装完后在命令行输入python,提示"不是内部或外部命令",十有八九就是装的时候漏掉了这个选项。PATH是什么呢?简单理解,它是系统查找程序的"通讯录"。你输入python,系统就拿着这个名字去PATH记录的目录里找,找到python.exe才能执行。如果安装时没有登记,系统自然找不到。要是已经装完才发现没勾,也不用急着卸载重装,可以手动去Windows的设置里编辑环境变量,把Python安装目录和它下面的Scripts目录加进去,具体操作我下一节说。
2.2 环境变量配置:为什么cmd里还是找不到python
这一节是新手重灾区,我会把Windows下的排查过程讲得细一点。装完Python后,按Win+R输入cmd回车,弹出命令行窗口,然后输入python。如果正常会进入一个带三个大于号的交互界面,说明环境变量没问题。如果提示"不是内部或外部命令",先不要着急,按下面几步检查。
第一步,找到你的Python安装位置。默认情况下,它通常在C:\Users\你的用户名\AppData\Local\Programs\Python\Python3xx这样的目录里,也可能在其他盘。怎么找?最简单的方式是到开始菜单里找到刚装好的Python快捷方式,右键查看文件所在位置,顺着快捷方式找到真正的python.exe所在目录。第二步,进入Windows的"编辑系统环境变量",打开"环境变量"对话框,在"系统变量"或"用户变量"里找到Path这一项,双击它,然后把python.exe所在目录和它同级的Scripts目录分别加进去。需要注意的是Scripts目录是pip命令的位置,很多同学只加了Python主目录,导致python能用但pip找不到。第三步,点击确定之后,一定要把当前已打开的命令行窗口全部关掉再重新打开。环境变量在窗口创建时读取,旧的窗口不会自动刷新,继续在旧窗口里试当然还是失败。
这些步骤做完基本就能解决。如果你用的是macOS或Linux系统,情况略有不同,一般系统会自带Python,但有些版本是Python2和Python3并存,命令行里需要用python3来启动,装包用pip3,这是很多人在非Windows系统上遇到的第一个版本混淆问题。
2.3 VSCode还是PyCharm:第一次作业选哪个编辑器
编辑器选择经常在初学者中间引发争论,我的建议很简单:别纠结,先看你课程要求。如果课程明确用PyCharm,那你就用PyCharm,因为它开箱即用,新建项目时会自动帮你绑定解释器,运行按钮也特别直观。如果课程没指定,或者你电脑配置一般,我推荐VSCode,它启动快、功能够用,配置也简单。我自己后来写小项目基本都是VSCode,轻量,不占内存。
但无论选哪个,有一个核心操作必须做:在编辑器里把Python解释器指向你刚才装的那个版本。VSCode里按Ctrl+Shift+P,输入Python: Select Interpreter,然后选择对应的解释器;PyCharm里则是去Settings -> Project -> Python Interpreter,看到版本正确就行。这一步很多人会忽略,导致编辑器里能写代码,但一运行提示找不到库,或者使用的根本不是当前环境。第一次作业虽然代码量少,但如果你现在就养成"编辑器绑定正确解释器"的习惯,后面学爬虫、数据分析时会少掉一大半烦恼。
3. 手把手拆解第一次作业的典型题目
3.1 输入输出与变量:让程序记住你的名字
第一次作业里出现频率最高的题目,是让程序接收一个输入,再输出一段话。比如"输入你的名字,程序向你问好"。这类题目看起来简单,背后考察的却是三个基础知识点:变量是什么、input返回什么、print怎么拼接。
直接看代码:
name = input("请输入你的名字:") print("你好," + name + "!欢迎开始Python学习。")这里有几个要点值得展开。第一,input函数会暂停程序,等待用户在键盘上输入内容,然后以字符串的形式返回。我们把它赋值给变量name,后面print再引用这个变量。第二,print里面的加号是字符串拼接,要求加号两侧都必须是字符串。为什么强调这一点?因为新手常见的翻车场景是把input拿到的字符串直接和数字做运算,或者想把字符串拼接到数字上,结果就报TypeError。第三,整个过程中字符串顺序要对,尤其是中文标点很容易打成全角,代码里引号必须用英文半角。
有同学可能会问,为什么不能直接写print("你好,name")?因为这样name会被当成普通文本,而不是变量。Python里变量名不加引号,加了引号就变成字符串字面量。这个区分如果第一次作业时就理解清楚,后面学列表、字典会轻松很多。
3.2 类型转换与运算:把字符串变成数字
另一个非常经典的第一次作业题是:"从键盘输入两个整数,计算它们的和并输出。" 很多同学的代码长这样:
a = input("请输入第一个整数:") b = input("请输入第二个整数:") print(a + b)结果输入3和5,输出却是35。为什么?因为input返回的是字符串,字符串的加号是拼接,不是数学加法。要想正确求和,必须先把字符串转成整数,这就要用到int():
a = int(input("请输入第一个整数:")) b = int(input("请输入第二个整数:")) print("两数之和为:", a + b)int()是一种类型转换函数,它能把"数字形态"的字符串转成整数。与之对应的还有float(),用于把字符串转成浮点数,也就是小数。为什么需要转换?因为程序里数据类型不同,支持的运算也不同。整数能加、能乘、能求余数,字符串能拼接、能切片,类型错了运算行为和你想的完全不同。这个"数据类型"的意识,是第一次作业里最值得建立的概念之一。
理解这一点后,你可以试着扩展一下:输入两个数,除法运算结果能不能整除?判断一个数是奇数还是偶数?这些题目最终都会落到"先把输入转成数字,再做运算"这个基本套路上。
3.3 条件判断与循环:让代码自己决定走向
如果第一次作业里出现了"判断奇偶"或"打印1到100之间的偶数"这类题,那你就要用到条件判断和循环了。先看判断奇偶:
n = int(input("请输入一个整数:")) if n % 2 == 0: print("这是偶数") else: print("这是奇数")这里有两个新手特别容易犯的错。一个是忘记在if那行末尾加冒号,冒号是Python语法的一部分,少了它立刻报SyntaxError。另一个是缩进问题,print前面必须缩进,Python用缩进表达代码从属关系,缩进错了程序逻辑就崩了。再扩展一步,如果要打印1到100之间的偶数,就要用for循环:
for i in range(1, 101): if i % 2 == 0: print(i)range(1, 101)表示从1到100,右边是开区间,不包含101。很多同学写成range(1, 100),结果发现99漏了,其实就是不理解range的结束值是不包含的。这种"边界问题"在编程里特别常见,第一次作业里吃过亏,后面写九九乘法表、写数据处理循环时都会记得先确认边界。
如果作业里出现类似"李白打酒"那种趣味题,也不要慌。它本质上还是考循环和递推:把题目的条件用变量表示,一次一次执行循环,更新变量值,最后输出结果。第一次作业遇到这类题,说明老师希望你能把实际问题转成代码逻辑,这时候画一画草稿、逐步跟踪变量值,比直接硬写要靠谱得多。
3.4 格式化输出:让结果看起来整洁
有的作业会要求输出结果比较整齐,比如表格、九九乘法表,或者一行里有多个变量。最朴素的写法是用加号拼字符串,但一旦内容多起来,加号拼接又麻烦又容易错。这时可以用f-string,它从Python 3.6开始支持,是现在最推荐的格式化方式。
看一个九九乘法表的例子:
for i in range(1, 10): for j in range(1, i + 1): print(f"{j} * {i} = {i * j}", end="\t") print()这里f-string的做法是在字符串前加一个f,然后用花括号把变量或表达式包进去,运行时Python会自动把它们的值填进去。end="\t"的意思是print默认在末尾换行,这里改成用制表符分隔,这样输出更紧凑。第一次作业就学会用f-string,会让代码看起来干净不少,也算给老师留个"这同学基础不错"的印象。而且f-string不仅作业里能用,以后写爬虫、做数据分析、输出日志都用得上,属于投入产出比很高的小技能。
4. 第一次作业常见报错排查技巧
4.1 IndentationError:Tab和空格混用引发的缩进错误
很多第一次作业的报错,问题并不是逻辑写错了,而是缩进。Python对缩进极其敏感,同一个代码块里如果混用了Tab和空格,解释器就会报IndentationError: unexpected indent。这种情况尤其容易出现在从网页或文档里复制代码的时候,别人用空格缩进,你这边输入法自动补成了Tab,一运行就出问题。
解决思路有两个。第一,在编辑器里开启"显示空白字符"功能,VSCode的设置项是Editor: Render Whitespace,PyCharm里也有对应选项,打开后你能直接看到代码里哪些是Tab、哪些是空格,一眼就能定位。第二,统一缩进风格,我个人建议统一用四个空格,这也是Python官方PEP8推荐的做法。VSCode和PyCharm都支持把Tab键自动转换成4个空格,设置好之后基本不会再犯这个错误。第一次作业如果不想在这一类低级错误上浪费时间,建议从一开始就养成统一的缩进习惯。
4.2 SyntaxError:中文标点和括号不匹配
另一个高频报错是SyntaxError,而且原因往往让人哭笑不得:输出了中文逗号、中文引号,或者是if后面的冒号打成全角。Python的解释器只认英文半角符号,你打了中文逗号,它会告诉你这样的标记不存在。遇到这类报错,第一反应不是问"哪错了",而是把出错行仔细看一遍,看引号括号是不是英文状态。
我一般建议同学写代码时把输入法固定在英文状态,需要输入中文内容时才临时切换。另外,VSCode和PyCharm都会有语法提示,代码里字符串是否闭合、括号是否匹配,在编辑器里就会有颜色变化提示。如果你看到一行代码的字符串颜色突然从绿色变成红色,或者括号下半截颜色不对,多半就是配对了问题。多做一步检查,能把SyntaxError消灭在运行之前。第一次作业阶段,这种细节不要觉得丢人,几乎每个程序员都经历过,重点是要形成自己排查的方法。
4.3 pip安装失败与换源
作业如果要求用到第三方库,比如用numpy处理数据、用requests写爬虫,第一步就是安装。在命令行里执行pip install 包名,如果下载速度特别慢,或者报timeout、ConnectionError,大概率是网络问题。这时候可以临时换用国内镜像源,比如清华源:
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple把包名替换成你要装的库就行。如果想一劳永逸,可以把默认源配置成镜像源,这样以后安装都不用加-i参数。还有两种情况:一是提示pip不是内部命令,说明Scripts目录没在环境变量Path里,回第2章补上;二是提示已经安装但代码里import失败,大概率是编辑器和命令行用的不是同一个Python解释器,回到第2.3节检查解释器绑定。第一次作业如果能把这一套"装库-报错-定位"流程走通,后面学数据分析、写爬虫、做自动化会顺利非常多。
5. 当第一次作业是"入门爬虫"题
5.1 用requests抓取网页的基本姿势
有些老师会把第一次作业设置成一个小爬虫,比如"抓取某个网页的标题"。说实话,对零基础的人来说这个跨度有点大,但既然老师这么布置了,说明他希望你把之前学的变量、循环、字符串处理综合用起来。最基础的爬虫脚本长这样:
import requests url = "https://example.com" resp = requests.get(url) print(resp.status_code) print(resp.text[:500])requests.get发起的是一次HTTP GET请求,resp.status_code是服务器返回的状态码,200表示正常,404表示页面不存在,可能你URL写错了。resp.text是网页的HTML源码,先打印前500个字符,可以确认网页有没有抓取成功。这一步的核心是验证链路,不要一上来就想着怎么提取数据,先确保能拿到页面。注意,这里我只建议抓取公开、合法的数据,并且要控制请求频率,不要写循环大量请求目标网站,那既可能给对方服务器造成压力,也可能给自己惹来麻烦。第一次作业练手,找一个稳定公开的页面就足够了。
5.2 用BeautifulSoup解析HTML并提取标题
拿到网页源码后,下一步是从一堆HTML标签里找出关键信息。最常用的工具是BeautifulSoup,它在已安装requests的基础上,进一步把HTML解析成方便操作的结构。先安装,再运行:
pip install beautifulsoup4然后看代码:
from bs4 import BeautifulSoup soup = BeautifulSoup(resp.text, "html.parser") title = soup.find("title") print(title.get_text())find("title")会在页面里找到第一个title标签,get_text()取出标签里的纯文本内容。如果你要抓取的是多个元素,可以用find_all或select,配合CSS选择器可以做到更精准的定位。不过第一次作业阶段,能写到这里已经很棒了,它证明你有能力让Python和真实的网络世界互动,而不仅仅是在黑框里打印字符。
有个小建议:爬虫类的作业,代码里的URL写死没问题,但输出的时候最好把来源URL和抓取时间一起打印出来,这样程序更像一个"完整的工具",而不是临时演示脚本。另外,装这两个库的时候如果报错,回到4.3节换国内源,基本一次就能通过。
6. 把第一次作业变成可分享的成果
6.1 用pyinstaller把作业打包成exe
很多同学第一次作业做完后,觉得只是老师看一下就完事了。但如果你愿意多花十分钟把代码打包成一个exe文件,体验会完全不一样。做完作业后双击就能跑,这个"作品感"对学习动力的提升是很大的。Python打包最常见的工具是pyinstaller,安装和执行都很简单:
pip install pyinstaller pyinstaller -F your_script.py-F表示生成单个文件。打包完成后,在dist目录下会生成一个exe文件,你可以直接发给朋友双击运行。如果你的程序用到了input等待用户输入,双击运行会弹出一个黑色窗口,这也正常,不是程序出错了。这里有个小坑需要提前说明:如果代码里有文件路径,尽量避免使用绝对路径,因为别人运行exe时文件不一定放在和你的开发环境一样的位置。作业里如果只是简单的输入输出,打包通常一次就能成功。
6.2 导出Excel时注意65536这个门槛
有些第一次作业可能是处理数据类的,比如统计一列数字、筛选重复项,然后导出Excel。很多同学用pandas写DataFrame.to_excel()导出时,会遇到一个奇怪的现象:数据明明超过65536行,导出的文件却只有65536行。这是因为老版本的xls格式有行数上限,而有些库默认写的是xls。解决办法很简单,把文件名后缀改成.xlsx,然后确保你装了openpyxl这个库,pandas就会按新格式写入,行数限制就完全不再是问题了。
第一次作业如果涉及数据导出,建议顺手掌握一下这个细节。它属于那种你不知道的时候能卡半天的坑,知道了以后就再也不会犯。类似的还有"筛选一样的"这种需求,其实一个set()去重或者drop_duplicates()就能解决,虽然第一次作业不一定考,但提前了解对学习信心有帮助。
6.3 代码规范与提交习惯:从第一次作业开始培养
最后聊一个看着不起眼、但越往后越重要的习惯:代码规范。第一次作业的代码通常只有几行,可能感觉无所谓,但如果你从第一天就养成下面几个习惯,后面课程和项目都会轻松很多。一是命名要见名知意,变量叫name、total_price,比叫a、b、c好得多;二是打印结果要有提示,比如print("两数之和为:", a + b)而不是print(a + b),这样别人看输出能明白是什么;三是适当写注释,解释关键思路,不需要每行都写,但核心步骤加上一行不会吃亏。
提交作业的时候,如果老师要求通过平台提交代码,记得先检查一遍文件格式是不是.py,文件内容是不是你自己最终运行的版本。我见过不少同学在dev分支改了好几轮,最后提交的却是早期版本,这种失误完全可以靠运行一遍来避免。第一次作业的意义不只是拿一个分数,它是你与这门课建立的第一个信任关系:你相信工具链是通的,代码是可以跑的,遇到问题是可以自己排查的。把这个地基打好,后面学什么都有底气。
我个人一直觉得,Python第一次作业真正让你带走的,不是print函数的用法,而是一套"遇到报错不慌、知道去哪里查"的方法。以后再碰到任何编程问题,你心里都会有底。好好把这份作业做完,你其实已经迈过了很多人没迈过去的坎。