第一次交Python作业很多人不是被题目难住的而是被“我明明照着教程写的它就是不运行”这件事逼疯的。我见过太多新手的屏幕了终端里飘着红色报错窗口一闪而过代码里缩进乱作一团老师走过来瞥一眼说“试试英文括号”你才发现自己把中文全角括号当真括号用了。这不是你笨而是第一次接触编程语言时你同时要做三件以前完全没做过的事把Python装对、把运行环境配好、让程序真正跑起来。任何一环出差错作业就卡在原地。这篇内容就是围绕“第一次作业”的真实场景来写的从安装环境、理解作业、写出可运行代码到提交前排查全程按零基础视角走一遍适合刚开始学Python、或者装好环境却还没跑通过任何程序的人。我们不整花活就解决“怎么把第一次作业稳稳交上去”这一件事。1. 第一次作业到底在考什么先别急着敲代码我每年都会收到一大堆“作业运行不了”的提问仔细一问十有八九不是题目太难而是大家根本不知道这次作业真正想考察什么。第一次作业的设计意图通常很朴素你把它想复杂了反而会绕远路。1.1 作业的三种常见形态你大概率会遇到其中一种第一种是纯环境类。老师让你交一个print(hello world)的运行截图或者让你在终端里执行python --version并把结果截图。这种作业看起来毫无技术含量却卡掉了相当一批人因为很多电脑上的Python根本没装好或者装完以后命令行里敲不出python命令。第二种是基础语法类。考察变量、输入输出、类型转换、条件分支、循环里的一两个基础点。比较典型的有输入一个年份判断是不是闰年、输入一个数字判断奇偶、把字符串中的大写转小写。第三种是综合小逻辑类。把一个简单问题拆成若干步骤让你体验“分析问题-写代码-调试-出结果”的完整链路。最经典的两个题目打印九九乘法表、统计一句话里每个字符出现的次数。这三类作业的侧重点完全不一样。环境类卡的是工具链语法类卡的是语言基础综合类卡的是逻辑组织能力。你拿到题目以后先判断它属于哪一类再决定投入多少精力。尤其是环境类作业很多人不理解为什么要交一个“hello world”截图。老师的用意不是看你会不会打印一行字而是想确认你有没有掌握一套完整工具链安装解释器、配置解释器、编辑文件、运行文件、看到输出、提交结果。这六步里有任何一步不顺后面所有作业都会受影响。所以别小看这个“hello world”它是一整条流水线的出厂测试。1.2 老师评分的四个隐藏关注点再说个容易被忽略的事实第一次作业的分值通常不高但它承担“摸底”功能。老师会通过你交上来的代码观察你的学习习惯比如文件名是不是“学号_姓名_作业1.py”变量名是不是a、b、c这种谁都能用、谁都看不懂的名字代码缩进是不是乱的一塌糊涂有没有把调试用的临时print一起交上来。这些细节叠加在一起就形成了老师对“这个学生有没有入门”的判断。所以第一次作业的隐含评分点不是“答案对不对”而是四个关键词能跑、能读、能提交、能复现。能跑指程序在你机器上运行结果正确。能读指别人比如助教能看懂你的思路而不是靠猜。能提交指格式和命名符合要求别交一个“新建文档.docx”或者一串乱码命名的.py文件。能复现指换一台电脑其他人按你的说明也能把它跑起来。你按这四个词去准备第一次作业基本不会翻车。也别花太多时间看那些漂亮的爱心代码、爬虫可视化界面、量化交易策略源码这些东西确实诱人但它们不是第一次作业该碰的。第一节课的目标是把基础链走通不是一步跨到天花板。2. 环境安装与配置第一次Python作业最容易栽在这里环境这个东西属于“没出事时你觉得它不存在一出事你寸步难行”的类型。很多同学第一次作业的滑铁卢不是代码写得不对而是压根没走到写代码那一步卡在安装和配置上。所以我把这一节放在代码前面它的优先级就是这么高。2.1 安装Python时这一步千万不能跳过如果你是Windows用户去官网下载安装包双击以后第一屏就有一个巨大的勾选框“Add python.exe to PATH”。这句话翻译成大白话就是把Python加入系统的“全局通讯录”以后你在命令行里敲python系统才知道去哪找它。不勾会怎样你装完了打开终端敲python系统直接回你一句“不是内部或外部命令”。你以为安装失败了其实Python就在那儿只是你找不到入口。所以第一步务必勾上这个选项再点Install Now。装完以后建议重启一下终端因为PATH的修改在旧终端里不会立即生效这个问题我见过太多次了——明明装好了终端里还是提示找不到命令于是重装一遍白白浪费半小时。Mac和Linux的情况稍有不同它们通常自带Python3但部分系统默认的是2.x老版本直接敲python可能进入一个完全不认识的环境。所以Mac上我一般建议用python3 --version来验证不要盯着“python”这个单词死磕。Linux用户则要留意系统里可能同时存在多个Python版本安装时最好明确指定版本不要盲目用系统默认值。另外不要图省事去下载那些“XX一键安装包”或者在手机上看“Python安装教程”后随便点链接。认准官网认准你课程要求的版本一般3.8以上都够用否则版本不对后面复制课程代码时可能出现语法不兼容那才是真的折腾。2.2 VSCode还是PyCharm第一次作业该选谁新手最容易陷入的工具选择纠结我来给你一个直接结论两个都能写第一次作业选哪个都不至于错但体验差别很大。工具优点缺点适合谁VSCode轻量插件生态好免费开源首次要手动选解释器想顺便学通用编辑器、电脑内存不宽裕的人PyCharm社区版开箱即用代码补全强自动检测解释器启动较重界面复杂希望少碰配置、愿意多占点内存的人IDLEPython自带零安装没有代码提示调试功能弱实在不想折腾只想交作业的人如果你已经装了PyCharm那就用它别折腾迁移。如果你还没选我推荐VSCode理由是它以后写爬虫、做数据分析可视化、甚至写别的语言都能继续用一次配置长期受益。VSCode配置Python环境核心就三步。第一步在扩展商店里安装微软官方发布的Python扩展。第二步按CtrlShiftP输入“Python: Select Interpreter”选你刚装好的解释器。第三步新建一个.py文件写一句print(hello)点右上角的三角形运行按钮。跑通了环境就配好了就这么简单。第一次用PyCharm的同学新建项目时它会让你选解释器一般默认“New environment using Virtualenv”就行这是给这个项目单独建一个隔离环境不会污染系统全局。你只要确认它关联的版本是你刚装的Python 3.x点Create然后右键运行.py文件即可。2.3 三个命令验证环境真的装好了很多同学对环境是否装好没有直观概念我教你这三招顺序执行一遍十秒钟判断。第一步终端里执行python --version如果返回Python 3.x.x就说明解释器在位。Windows上有时需要敲py --version这是Windows自带的启动器效果一样。第二步执行pip -V或pip --version看到一串路径和版本信息就说明包管理工具正常。pip是以后安装第三方库的通道第一次作业大概率用不到但提前验证能帮你把“以后装不了库”的问题隔离掉。第三步写一个测试文件test.py内容就一行print(hello)然后在终端切到该文件目录执行python test.py。如果输出 hello说明从编辑到运行的整条链路是通的。这三步全过你的环境百分之百没问题后面作业的任何报错都可以放心推到代码上。这里额外解释一个高频现象很多同学在资源管理器里双击.py文件弹出一个黑色窗口一闪而过就以为程序运行失败了。其实不是程序正常运行完只是窗口拿来即走你不给它停留的机会。正确的做法是在终端里用python 文件名.py运行或者临时在代码末尾加一行input()让窗口等待你按键再关闭。搞清楚这个“闪退”假象你能少慌好几回。3. 作业核心代码实战打印九九乘法表从零到提交环境搞定以后我们来真正写一个能拿得出手的作业。下面我用“输入一个正整数n输出n以内的九九乘法表”这道经典题完整演示一遍从读题到交出代码的过程。这道题几乎覆盖了第一次作业要考的绝大多数语法点变量、输入输出、类型转换、嵌套循环、格式化字符串。3.1 作业题目与完整可运行代码先看完整代码你可以直接照着敲一遍但强烈建议敲完后自己再改几行试试后面我会解释每一行的作用# 作业1打印n以内的九九乘法表 # 姓名张三 学号20240001 n int(input(请输入一个正整数 n)) for i in range(1, n 1): for j in range(1, i 1): print(f{j} × {i} {i * j:4}, end) print()运行结果长这样这里我导入的是9请输入一个正整数 n9 1 × 1 1 1 × 2 2 2 × 2 4 1 × 3 3 2 × 3 6 3 × 3 9 1 × 4 4 2 × 4 8 3 × 4 12 4 × 4 16 1 × 5 5 2 × 5 10 3 × 5 15 4 × 5 20 5 × 5 25如果你输入的是5就只打印到“5×525”。如果你输入的是9那就是完整的九九乘法表。这就是我们这个作业要的全部功能。3.2 每一行代码在做什么逐步拆解第一行n int(input(请输入一个正整数 n))这行是很多新手第一次吃TypeError的地方。input()函数从键盘读到的内容永远是字符串类型比如用户输入“9”它拿到的是字符串“9”不是数字9。字符串不能直接参与算术运算所以必须用int()把它转换成整数。漏掉int()的后果是后面运行时会报错提示字符串不能被当作整数使用。第二行for i in range(1, n 1):这个循环控制乘法表的“行”。range(1, n 1)的意思是生成一个从1开始、到n结束的整数序列注意它不包含 n1 本身。很多新手不理解为什么不是range(1, n)因为Python的区间遵循“左闭右开”range(1, n)只到 n-1会少打印一行。你可以自己试试改成n看看输出最后一行是不是消失了这个错误特别经典。第三行for j in range(1, i 1):内层循环控制“列”。关键在于列的范围是1到i也就是说第二层循环的次数会跟着外层的行数走。第一行只有1列第二行只有2列这样才形成直角三角形而不是一个完整的九宫格。如果写成range(1, n 1)每一行都会打印9列那就不是“n以内”的乘法表了。第四行print(f{j} × {i} {i * j:4}, end)这行有三个知识点。f...是格式化字符串花括号里可以直接写变量或表达式运行时会自动替换成值。{i * j:4}中的4表示左对齐、占4个字符宽这样“3×39”后面虽然有空格但下一列的起点位置是整齐的不会因为数字从一位变成两位而错乱。最后的end表示“本次print不要换行”因为一行的内容要连续输出逐个拼接过去。第五行print()这行看起来是打印一个空东西实际作用是换行。外层循环的每一轮结束后调用一个不带任何内容的print()把光标切到下一行开始打印下一行的内容。没有它所有内容会挤成一整行画面惨不忍睹。你把这几个点全部理解了这道作业才算真正吃透。如果只是把代码复制过去交差下次换个题型你照样不会作业就白做了。3.3 写得“像样”比跑通更重要代码能跑只是及格线一个会让老师多看你几眼的作业通常还具备下面几个习惯。这是我批作业时总结出来的经验比什么炫技都管用。文件命名要清晰。别交123.py、未命名.py更别交“新建文档.docx”。按照“学号_姓名_作业序号.py”的格式最稳妥比如20240001_张伟_作业1.py。这一步花不了10秒钟却能避免你辛苦写的作业因为找不到作者而被扣分。代码顶部写一句话注释。像上面的示例那样用#开头写清楚“这是哪次作业、解决什么问题姓名学号是谁”。这是给阅读者包括未来的你自己的导航信息也是很多作业题目的隐藏要求。命名要有含义。内层变量用i、j完全没问题这是循环变量的惯例。但如果你要存用户名、年龄、总分就别用a、b、c这种没人看得懂的单个字母多写几个单词比如user_name、total_score可读性会好非常多。不要把调试用的临时print留着。我见过不少同学在正式代码里混着print(测试)、print(变量)这类临时输出结果老师运行起来答案中间夹着一堆莫名其妙的内容完全不符合题目要求的输出格式。交之前把所有调试输出清干净。最后说句实在话别直接抄网上的“作业答案”。那些代码常常混着怪异的全角空格、奇怪的缩进、甚至缺了某个标点抄过来反而更容易报错。更关键的是第一次作业的试错成本极低错得再离谱也就扣点平时分但你在这个过程里真正理解的知识后面能帮你少踩无数坑。4. 提交前自救指南高频报错与自查清单万事俱备只差运行这一下。结果终端喷出一堆红色文字心态瞬间就崩了。别慌报错是编程里的家常便饭不是末日。我第一次写Python的时候一个缩进错误折腾了半小时最后发现是复制代码时多了一个看不见的空格。下面这些报错场景你要是提前有印象遇到时排查速度会快很多。4.1 高频报错速查表报错信息常见原因解决办法SyntaxError: invalid syntax语法错误比如中英文括号混用、字符串引号未闭合、漏了冒号看报错信息里指向的那一行检查全角字符尤其是括号和引号IndentationError: unexpected indent缩进错误可能多敲了空格或Tab常见于复制别人代码之后统一用4个空格缩进不要混用Tab不要在不需要缩进的地方缩进NameError: name xxx is not defined变量名没定义可能是拼写错了或引用了还没赋值的变量检查变量名拼写是否一致确认使用前已经赋值TypeError: str object cannot be interpreted as an integer把字符串当整数用了一般就是忘了给input()加int()转换改成n int(input(...))ValueError: invalid literal for int()int()收到非数字内容比如输入了字母abc程序本身逻辑没问题是输入不合法第一次作业可不做校验但要知道这不是作业写错FileNotFoundError: [Errno 2] No such file or directory: xxx.py终端里运行的.py文件路径不对执行前先cd到文件所在目录或者写全路径No module named xxx缺少第三方库还没用pip安装第一次作业基本遇不到遇到的话执行pip install xxx这里面最冤的是最后一种报错指向第n行你一看第n行长得挺正常啊。记住一个原则Python报错信息指出的位置是“它发现在哪里的那一刻”真正的问题往往出现在那一行之前。比如int()报错问题根源常常在更前面的input()那句因为类型转换是从那里开始的。还有一个很常见但表格里没列出来的“隐性报错”程序能运行但输出和题目要求差一点。比如题目要求输出“x*yz”你输出的是“x×yz”题目要求每行分隔用空格你用了Tab。这种问题编译器不会报警只能靠自查。4.2 提交前的六项自查写完之后我建议你按下面这个清单过一遍比反复“感觉应该没问题”可靠得多。这是我给自己和学生都用的流程亲测能筛掉九成低级失误。第一在IDE里重新运行一遍完整程序确认输入题目给的测试样例时输出完全符合要求不多一行也不少一行。第二检查输入输出格式。题目里提示“请输入一个正整数 n”你的代码里有没有对应的提示语题目有没有规定输出格式如果有题目给的示例输出把它复制下来和你的输出逐字对比。第三确认提交物格式。老师要.py文件就交.py要压缩包就压缩包可别截图塞进Word。很多同学在最后一步翻车不是程序的问题是交错了东西。第四看代码开头有没有按要求写姓名学号。有些作业格式模板里有明确的位置直接往对应地方填不要自己另造格式。第五删掉所有调试用的临时代码和多余空行缩进统一为4个空格。这一步能避免“代码能跑但老师看了皱眉”的尴尬。第六如果题目要求写思路或总结单独写在文档或注释里别把大段文字堆在代码中间。好的作业代码读起来行云流水注释点到为止不需要长篇大论。4.3 交不上作业时的实用操作如果真的卡到最后一天还没搞定也别直接摆烂。我给你几条实用建议按优先级排好。先把问题拆小。不一定要完成整份作业才算有产出你可以先写一个最最简单的print(1)确认环境和基础流程通了再逐步加复杂度。很多时候你觉得“这题做不出来”实际是“这题需要同时掌握5个知识点”而你在其中某一个点上卡住了。把它单独拎出来测试思路会清晰很多。把报错原文完整复制出来然后去搜索引擎搜报错信息的最后一行关键词。别搜“Python作业报错”这种泛泛的问题要把报错类型原样搜索比如TypeError: str object cannot be interpreted as an integer。这个操作听起来简单但能直接命中答案比你对着代码发呆半小时高效得多。卡了超过三十分钟就去找同学或者助教。发现问题不是丢人的事卡住不吭声才是问题。提问的时候别说“我的代码不行”要学会说“我做了什么操作、预期是什么、实际报错是什么、我已经尝试过什么”。这句话一说出来对方能瞬间定位你的问题而不是陪你猜谜。我见过太多学生因为不好意思提问把一晚上时间耗在一个3秒钟就能解决的错误上。第一次作业好不好并不重要重要的是你学会“遇到问题怎么寻求帮助”这个能力后面所有课程都用得上。提交前的最后一刻再试试把整个流程重新走一遍打开终端运行python 你的作业文件.py输入测试数据看到正确输出然后压缩上传。这一步走完你就完成了整个作业交付闭环第一次Python课最难的坎也算迈过去了。我个人批作业时感触最深的一点是那些提前交作业的同学往往不是写得多么惊艳而是他们环境配得早、跑得勤把“安装-配置-运行-提交”这条链路走顺了后面所有项目都受益。所以第一次作业你不用追求满分也不用羡慕网上那些花哨的可视化和量化策略代码把九九乘法表稳稳跑出来你就已经抢跑了。
