第一次python作业听起来是个很小的事但我见过太多人包括我自己在这道门槛上栽跟头。我当年装Python就折腾了快一个小时然后在编辑器里按运行又因为没选解释器报了一串看不懂的错。后来终于写出了第一行“Hello, World”再做第一道作业时我发现真正需要的不是高超的技术而是一个能顺利运行的Python环境、一套最基础的语法和一条清晰的排错思路。这篇文章就是我从第一次作业里总结出来的实战笔记适合刚装完Python、准备在VSCode里写程序、或者已经被作业里的报错搞到怀疑人生的人。1. 第一次作业前先把“跑起来”这件事搞定很多同学第一次作业迟迟没法开始不是因为题目难而是环境压根没跑通。代码写得再对运行不了就是零。所以第一步永远是让Python在你的电脑上能被正常调用。1.1 安装Python版本选对心情翻倍去Python官网下载安装包时要注意别选到特别古老的2.x系列。现在学校作业和主流教材基本都是Python 3我用的就是当时官网里的最新稳定版比如3.8、3.10这类。别盲目追太新的开发版稳定版能少踩不少兼容性的坑。Windows安装时有一个很容易被忽略的勾选项Add Python to PATH。我强烈建议勾上它。如果漏了后面在命令行里敲python会提示“不是内部或外部命令”光这个问题就能卡一下午。装完以后打开命令行输入python --version如果输出了类似Python 3.10.11这样的内容说明安装成功。要是提示找不到命令可以重新运行安装包选择Modify然后勾选Add Python to PATH也可以在系统环境变量里手动把Python安装目录和Scripts目录加进去但新手我更推荐直接重新装一遍省事。macOS和Linux一般自带Python 3命令行里输入的是python3而不是python这也是很多跨平台教程没说清楚的地方。判断标准是命令行里哪个命令能打印版本你后面就用哪个命令运行脚本。只要能跑起来命令名是什么不重要。1.2 用VSCode还是其他编辑器我为什么推荐它第一次作业用自带的IDLE完全没有问题它对新手很友好打开就是交互式窗口可以直接写代码运行。但我个人更推荐直接上VS Code因为以后写爬虫、数据分析、Web项目都要用到它早点熟悉这个工具链比中途再切换代价小得多。VSCode配置Python环境核心就三步安装Python扩展、选择解释器、运行脚本。先在扩展市场里搜Python安装微软官方那个扩展。然后按CtrlShiftP输入“Python: Select Interpreter”选你刚装好的那个Python版本。这个步骤很容易被跳过但如果不选解释器运行代码时会报“解释器未配置”或者干脆没有任何反应。新建一个test.py文件写print(Hello, python)然后在编辑器里右键选择“Run Python File”或者直接在终端里执行python test.py看到输出你的“第一次作业”才算真正打开了门。这里还有一个常见问题在VSCode内置终端里运行脚本如果提示python找不到但编辑器按钮运行却正常多半是环境变量问题。这时候你可以检查VSCode右下角状态栏显示的Python解释器路径看是不是指向了你安装的那个版本。如果指向的是全局某个环境而终端用的是另一个就会发生这种“按钮能跑命令行不能跑”的怪事。遇到这种情况把解释器路径改成同一个问题就消失了。2. 作业里最常用的Python基础语法一次讲透第一次作业的题目千差万别但用到的基础语法就那几样变量、类型、输入输出、列表切片、循环、条件判断、函数。把这些搞明白大部分作业都能对付。2.1 变量、类型与类型转换Python定义变量不需要写类型直接等号赋值就行a 3 b 3.14 name python flag True你可能觉得这太简单了但第一个坑马上就来。如果你把用户输入的东西直接拼进算式里会出大问题。因为input()返回的一定是字符串age input(请输入年龄) print(age 1) # TypeError: can only concatenate str (not int) to str所以要把输入转换成数字这就用到了类型转换。比如age int(input(请输入年龄)) score float(input(请输入成绩))int()转整数float()转小数str()转字符串。热搜词里还有个python abs函数这个很简单就是求绝对值print(abs(-5)) # 5在作业里类型转换通常是题目里特意设置的考点。比如题目让你计算长方形面积你直接input两个数字相乘得到的不是数值而是字符串拼接的结果。明白了这一层很多报错就有了答案。2.2 输入输出两个最容易被低估的函数print和input是第一节课就会教的但真正用好的没几个。输出时我强烈建议用f-string比用加号拼接省心太多name 张三 score 90 print(f{name}的成绩是{score}分)注意f-string前面有个小写f花括号里写变量名。这个语法在Python 3.6以上都能用几乎所有作业环境都满足。关于输入还有个小细节可以在input的参数里写提示语但是提示语后面如果没加空格用户输入时会感觉紧贴着提示符。建议写成input(请输入姓名 )体验好一点。再就是中文输入输出的编码问题。你可能会在运行脚本时遇到乱码或者直接报SyntaxError: (unicode error) utf-8 codec cant decode。遇到这种情况先检查文件是不是保存成了UTF-8编码。VSCode右下角可以切换编码选UTF-8基本就稳了。老写法# -*- coding: utf-8 -*-在Python 3里一般用不上但加上也不影响。2.3 列表、切片与循环反复出现的三兄弟一旦作业里出现一串数据列表就来了。定义一个列表很简单scores [85, 90, 78, 88, 70]访问第一个元素是scores[0]最后一个元素是scores[-1]。这里最容易踩的坑是IndexError也就是下标越界。比如列表只有5个元素你去访问scores[5]必然报错。切片是热搜词里的高频考点也是我第一次作业里没搞懂的。语法是列表[起始:结束:步长]注意一个反直觉的地方结束位置是不包含的。scores[1:4] # 取出下标1到3的元素 scores[::2] # 从0开始每隔一个取一个 scores[::-1] # 倒序输出配合循环能写出很多第一次作业里看起来很厉害的小功能total 0 for score in scores: total score print(total) # 411用range生成等差数列也很常用for i in range(1, 10): print(i)在第一次作业里循环常用来做累加、打印图案、遍历列表。只要记住range(起始, 结束, 步长)同样是含头不含尾基本不会写错。2.4 条件判断与函数定义让代码学会“动脑子”条件判断的完整格式是if-elif-else。新手容易漏掉冒号或者用中文的冒号。这在PyCharm和VSCode里都看不出来一运行就报SyntaxError。一个常见作业是“判断成绩等级”score float(input(请输入成绩)) if score 90: print(优秀) elif score 60: print(及格) else: print(不及格)注意这里第一次出现的缩进问题。Python用缩进来表示代码块同一个if下面的代码必须保持相同缩进。我建议统一用四个空格不要用Tab因为Tab和空格混用会触发IndentationError并且肉眼看起来一模一样排查起来极其痛苦。函数在第一次作业里通常是最后一道题因为部分老师会把“自定义函数”塞在作业里。写法别怕就是def add(a, b): return a b print(add(3, 5))函数定义的关键是def关键字、函数名、括号里的参数、后面的冒号和函数体缩进。返回用return没有return的时候函数会返回None。我第一次写函数时忘了调用只在作业上写了定义结果什么都没有输出后来才明白定义函数不等于执行函数必须主动调它。热搜词里还有个python定义函数其实我建议第一次作业时哪怕题目没有要求也把那些跑通的代码尽量塞进函数里。这样不仅能练习语法还能让代码看起来更“项目化”。3. 几道典型的“第一次作业”题目手把手拆解光讲语法容易散我们直接看几道我当初做过以及身边学弟学妹经常遇到的题目。每道题我都会说清楚思路、给出一个能跑的版本并解释为什么这样写。3.1 打印一个爱心图案这是很多老师爱布置的“开胃菜”热搜词里也一直有python爱心代码。核心思路就一句话用循环控制行数用字符串的乘法和加法拼出每一行。for i in range(1, 6): print( * (5 - i) * * (2 * i - 1))输出一个简单的三角形。如果题目非要爱心也没必要抠像素可以用几行print直接拼一个print( ** **) print( **** ****) print( **********) print( ********) print( ******) print( ****) print( **)这种题目考的就是你对字符串拼接和print的理解别过度设计。第一次作业的目标是“跑得出来并且能解释”不是“画得完美”。3.2 求长方体体积这道题把输入、类型转换、算术表达式、输出全串起来了。我的第一个版本长这样length float(input(请输入长)) width float(input(请输入宽)) height float(input(请输入高)) volume length * width * height print(f长方体的体积是{volume})这里为什么要用float而不是int因为边长可能是小数。如果题目明确整数用int也没问题但遇到小数会崩。第一次作业里float是更安全的选择。但只看这个版本还远远不够。后来我改进成了带“输入校验”的版本while True: try: length float(input(请输入长)) if length 0: print(长度必须大于0请重新输入) continue break except ValueError: print(请输入数字)这个try-except结构一下子把代码从“作业水平”拉到了“工程水平”。continue、break和异常处理在这个场景里并不是超纲内容理解了会很加分。3.3 数组切片练习题有一类题目不叫“数组”叫“列表”但意思一样。比如老师给了分数列表scores [85, 90, 78, 88, 70, 95]要求输出前三个、每隔一个取值、逆序等内容。解题就靠切片print(scores[0:3]) # 前三个85, 90, 78 print(scores[::2]) # 隔一个取一个85, 78, 70 print(scores[::-1]) # 逆序更常见的变式是“求平均分”average sum(scores) / len(scores) print(average)sum()和len()都是内置函数第一次作业用它们往往能被老师夸一句“会用Python的思维方式”。切片和内置函数是处理批量数据的基础以后写数据分析脚本也会用到同一个套路。3.4 定义函数求阶乘阶乘这个作业题几乎绕不开。5! 5*4*3*2*1用递归实现def factorial(n): if n 0: return None if n 0: return 1 return n * factorial(n - 1) print(factorial(5))递归第一次看的时候容易晕但其实只需要抓住两点递归出口和递归调用。出口就是n 0时返回1后面每一层调用都依赖下一层的返回值。我当初就是画了一张递归调用图才彻底理解纸上画一下factorial(4)的调用过程比死记代码有用得多。如果你觉得递归别扭循环版也很好理解def factorial(n): result 1 for i in range(2, n 1): result * i return result作业里只要结果正确、思路清晰两种写法都行。但要能在代码旁边用注释说明你的思路这比代码本身更值分。3.5 把结果写入Excel文件有些“进阶版第一次作业”会要求在最后把结果保存下来。我当时用的最省事的方式是用标准库csv模块因为不用额外装依赖import csv with open(result.csv, w, newline, encodingutf-8) as f: writer csv.writer(f) writer.writerow([题目, 结果]) writer.writerow([长方体体积, volume])这个文件用Excel打开就是表格。如果题目明确要求.xlsx格式那可以用openpyxlpip install openpyxl然后from openpyxl import Workbook wb Workbook() ws wb.active ws.append([题目, 结果]) ws.append([长方体体积, volume]) wb.save(result.xlsx)第一次作业如果能把数据写进文件会一下子超过班上大多数人。这个功能放到以后做python写入excel、自动化报表完全就是同一套思路提早掌握很划算。4. 作业运行报错这些坑我全踩过第一次作业最常见的根本不是逻辑错而是各种各样的运行时报错。这里面有规律可循我把最容易遇到的放在前面。4.1 最常见的5个报错及解决我用一个表格快速汇总这五类占了我当年报错总数的九成报错信息典型原因快速解决NameError变量名写错了或者没定义检查是否拼错、是否忘记赋值IndentationError缩进不一致Tab和空格混用统一用4个空格重新缩进TypeError对字符串和数字做了加减乘除用int()/float()转换类型IndexError列表下标越界检查列表长度和下标范围SyntaxError冒号没写、括号不匹配、中文标点看报错位置附近的符号改成英文这五个报错解决掉第一次作业就完成了八成。我尤其提醒中文标点这个问题在中文输入法状态下写代码小括号、冒号、引号很容易变成全角编辑器里看着差不多运行就崩。我的土办法是每次写完代码先扫一眼关键符号或者把输入法切成英文再写。4.2 看懂Traceback别再瞎试Python报错信息最后几行就是你最好的调试助手。比如Traceback (most recent call last): File test.py, line 3, in module print(name) NameError: name name is not defined它明确告诉你错误发生在test.py的第3行具体原因是没有定义name。很多人一看到英文就慌其实只要看最后一行就行。如果报错信息不够直观可以在关键变量后面临时加一句printprint(debug: length , length)看到值不对劲就能定位问题是不是出在输入或转换上。排查完后记得把print删掉不然会干扰别人读你的作业。我还用过的一个办法是“二分注释”法把代码一半注释掉让程序先跑通再逐步放行。比如总报错但不知道是哪一行就把后面半段全部注释看前半段是否正常。这样能快速缩小范围。4.3 编码问题中文没乱码但脚本乱码了如果你的程序里有中文注释或者中文输出运行时报SyntaxError: (unicode error)大概率是文件编码问题。VSCode里点右下角把编码改成UTF-8基本解决。如果你用的是老旧的文本编辑器可以在文件第一行加# -*- coding: utf-8 -*-虽然Python 3默认UTF-8但有些环境的兼容性还是让人一言难尽。另外我建议第一次作业的变量名、文件名不要用中文不是不能而是容易在不同环境下出现编码问题。课程要求用中文变量名除外否则一律用英文。4.4 装了库还是提示ModuleNotFoundError有时题目要求用某个库比如numpy、sklearn、openpyxl你在VSCode里明明选了Python解释器但运行还是报ModuleNotFoundError: No module named numpy这说明你现在运行脚本用的Python环境里没有这个库。解决办法是在终端里安装pip install numpy注意一定要在同一个环境下安装。有些同学电脑里装了好几个PythonVSCode选择一个版本命令行pip install又装进另一个版本结果两边永远对不上。我的经验是先在VSCode里看右下角解释器路径再用那个路径对应的Python解释器来装包。比如C:/Python310/python.exe -m pip install numpy这样确保装进同一个环境。下载慢的话一般可以用国内镜像源加速pip install numpy -i 镜像地址。公网下载速度如果正常直接用官方源就行。5. 从“第一次作业”往后走的路第一次作业交上去不是终点它是你和Python之间关系的开始。我后来发现同样一份作业有人只是“能交”有人却把它当成一个小项目来做差距几个月后就拉开了。5.1 把作业从“能交”做到“漂亮”如果你还有半天时间试着把作业里那几个功能封装成函数。比如把输入、计算、输出分开def get_positive_float(prompt): while True: try: value float(input(prompt)) if value 0: return value print(请输入正数) except ValueError: print(请输入数字) def cal_volume(length, width, height): return length * width * height l get_positive_float(请输入长) w get_positive_float(请输入宽) h get_positive_float(请输入高) print(cal_volume(l, w, h))这个版本看起来比一坨自上而下的脚本舒服得多。每个函数负责一件事读代码的人一眼能看懂。第一次作业能写到这个程度比多会十个语法点都更能打动老师。5.2 这些作业里的语法以后都长在项目里我做完第一次作业后又去玩了python爬虫、python数据处理、甚至为了好奇查过python量化交易策略代码回头发现核心还是循环、列表、字典和函数。爬虫里遍历网页链接本质是for循环加条件判断数据处理里清洗表格本质是列表切片加类型转换量化交易策略里的回测本质也是循环加数学计算。所以别以为第一次作业很简单就跳过它其实在帮你脑子里建立一套最基础的“计算图”。后面那些看起来酷炫的项目全是这些基础积木搭出来的。5.3 我的几点体会踩过这么多坑之后我最想说的是写作业之前先在纸上用中文写一遍思路甚至写成注释。比如# 1. 输入长宽高 # 2. 转换为数字 # 3. 计算体积 # 4. 输出结果然后再把注释一步步“翻译”成Python代码。我试过很多次这种方式比对着空文件发呆高效太多基本上不会出现“不知道从哪下笔”的情况。最后一个小技巧第一次作业不追求一次写对但追求“每次跑通一点”。哪怕先只让程序输出一个提示语也算前进了一步。把一个大问题切成几个小问题逐个解决你就会发现Python的第一次作业其实比想象中温柔得多。