
还在为“Python 第一次作业”发愁别急这篇文章就是为你准备的。不管你是刚把Python装好、连“print”都还不太熟的新手还是已经被老师布置的作业弄得一头雾水这篇内容都能帮到你。我会从环境搭建、工具选择、基础语法一直讲到作业实战和报错排查全是最实在的干货照着做就能把第一次作业搞定。1. 环境准备先把Python和编辑器装明白1.1 下载安装Python这步千万别省很多人第一次做作业卡住的不是作业本身而是环境根本没配好。我记得自己第一次写Python照着教程敲了半天代码结果连“Hello World”都跑不出来后来才发现是Python没装好、环境变量没配对。这种坑能避就避。先说下载。官网是python.org进去之后找到Downloads它会自动识别你的操作系统给出对应的安装包。Windows用户下载Windows installer64位macOS用户下载macOS 64-bit universal2 installer。千万别去什么“Python中文网”“Python下载站”之类的地方下载那些站点经常捆绑各种乱七八糟的东西甚至可能装上带病毒的假Python。认准官方域名这是第一原则。下载完之后双击安装包。这里有一个关键的细节安装界面底部有一个“Add Python to PATH”的复选框一定要勾上。这个选项的作用是把Python添加到系统环境变量里让你在命令行中直接输入python就能运行。很多教程会提醒勾选但总有人忽略结果后面命令提示符里敲“python”就报错。安装路径建议用默认的就好不要自作聪明改到中文目录下。Python本身对中文路径的支持虽然近些年有所改善但为了避免一些莫名其妙的问题还是老老实实用默认路径。macOS用户安装时一路Next或者Continue就行装完之后可以在“启动台”里找到IDLEPython自带的编辑器。Linux用户一般系统自带Python可以用python3 --version检查一下如果没有就用apt install python3Debian系或者yum install python3RedHat系安装这里不展开。提示安装完成后打开命令提示符Windows按Win R输入cmd回车输入python --version如果显示Python 3.x.x说明安装成功。1.2 编辑器选择VsCode还是PyCharmPython装好之后还得有个写代码的“笔记本”。这里的选项很多系统自带的IDLE、Sublime Text、Notepad、VsCode、PyCharm等等。我的建议是新手首选VsCode理由很简单——免费、轻量、配置灵活而且各种插件让写Python的体验非常舒服。PyCharm当然也很好尤其是专业版自带各种调试工具但是它的启动速度慢、占用内存多配置过程也稍显繁琐对新手来说容易劝退。如果Non-creative追求开箱即用那可以选Python自带IDLE。IDLE的好处是不用任何配置安装完就能直接写坏处是提示功能弱、界面简陋写复杂一点的代码会很不舒服。VsCode则介于两者之间界面清爽插件生态丰富配置好之后体验媲美专业IDE值得花半小时折腾一下。VsCode的配置流程也不复杂。先去code.visualstudio.com下载安装然后在扩展商店快捷键CtrlShiftX搜索“Python”安装微软官方发布的那个扩展发布者是Microsoft认准它。装完之后用快捷键CtrlShiftP打开命令面板输入“Python: Select Interpreter”选择你刚安装的Python解释器就完成了。测一下是否配置成功在VsCode里新建一个文件命名为test.py输入print(Hello, Python)然后右键选择“在终端中运行Python文件”如果终端里输出了“Hello, Python”说明整个环境链路已经通了可以开始写作业了。1.3 常见环境问题速查问题1安装完成后在cmd中输入python提示“python was not found; run without arguments to install from the Microsoft Store”。这个错误很常见原因是系统没有找到Python的安装路径。解决办法就是重新安装Python安装时确保勾选“Add Python to PATH”。如果已经勾选但还是报错那就看看环境变量——右键“此电脑” → 属性 → 高级系统设置 → 环境变量在“Path”里看看有没有C:\Users\你的用户名\AppData\Local\Programs\Python\Python311\和对应的Scripts目录如果没有就手动添加然后重启cmd。问题2输入python3显示“不是内部或外部命令”。这个主要是Windows用户的问题。Windows系统下命令一般是python而不是python3python3是macOS/Linux的常用叫法。如果你在cmd里习惯性敲python3就会提示找不到。解决办法是直接用python命令或者把脚本文件用“python 文件名.py”的方式运行。问题3VsCode终端里运行Python文件提示“Python was not found”。这种情况一般是VsCode没有识别到Python解释器。重新执行一遍“Python: Select Interpreter”操作或者检查一下VsCode的终端是不是用的默认PowerShell有时候切换成CMD模式就能解决。2. 第一次作业前必会的10个基础语法2.1 变量与类型从赋值开始Python里的变量不需要声明类型直接赋值就能用。比如a 10这个a就是整数类型b hellob就是字符串类型。这比C语言、Java简单了很多上手几乎没有门槛。但要留意的是Python虽然是动态类型也不意味着可以随意混淆类型。两个整数相加得到整数两个字符串相加是拼接整数和字符串相加就会报错。比如a 10 b 20 print(a b) # TypeError: unsupported operand type(s) for : int and str解决的办法是类型转换——把字符串转为整数用int(b)把整数转为字符串用str(a)。所以上面的代码改成print(a int(b))或者print(str(a) b)就能正常运行。这个知识点在作业里用得非常多尤其是从用户输入里读取数据时后面会专门讲。2.2 输入输出print与inputprint()是输出函数基本用法是print(内容)内容可以是字符串、数字、变量也可以是多个值——用逗号隔开就行Python会自动用空格分隔它们。print(年龄是, 18) # 输出年龄是 18 print(结果 , 3 5) # 输出结果 8input()是输入函数它会把用户从键盘输入的内容作为字符串返回。这一点非常重要很多新手写程序时需要用户输入数字然后直接拿去计算结果报错原因就是input()返回的是字符串必须先转成数字才能参与数学运算。age_str input(请输入年龄) # 返回的是字符串 age int(age_str) # 转为整数 print(明年你, age 1, 岁)2.3 条件判断if-elif-else条件判断是几乎所有编程作业的必考点了。Python的写法很简洁语法结构如下if 条件1: # 条件1成立时执行的代码 elif 条件2: # 条件2成立时执行的代码 else: # 以上条件都不成立时执行的代码需要注意的有两点一是条件后面要加冒号:二是代码块必须缩进一般用4个空格。Python用缩进代替了其他语言的花括号所以缩进错了程序就跑不了或者逻辑就错了。这个设计对新手来说一开始不太适应但适应了之后反而觉得挺好代码结构一眼就能看出来。score 85 if score 90: print(优秀) elif score 80: print(良好) elif score 60: print(及格) else: print(不及格)2.4 循环结构for与while循环在作业里出现的频率也很高。for循环常用于遍历序列列表、字符串、range范围等while循环适用于不知道具体循环次数、只知道循环条件的场景。# 打印1到5 for i in range(1, 6): print(i)range(1, 6)生成从1到5的整数序列注意是左闭右开——包含起始值1不包含结束值6。这是新手最容易搞混的地方。比如要循环5次一般写range(5)生成的是0, 1, 2, 3, 4。# while循环倒计时 count 5 while count 0: print(count) count - 12.5 列表与字典作业里的数据容器列表用方括号[]表示可以存放各种类型的数据。取元素从索引0开始list[0]是第一个元素list[-1]是最后一个元素。这个负数索引的用法是Python的特色很方便。fruits [苹果, 香蕉, 橙子] print(fruits[0]) # 苹果 print(fruits[-1]) # 橙子 fruits.append(梨) # 添加元素字典用花括号{}表示存储“键值对”。它是一种映射关系就像查字典一样通过“键”来找到“值”。student {name: 小明, age: 18, score: 95} print(student[name]) # 小明 student[age] 19 # 修改值2.6 函数基本写法第一次作业很可能要求你写函数比如def 函数名(参数):这样的结构。函数的作用是把一段重复使用的代码封装起来调用时传入不同参数得到不同结果。def add(a, b): return a b result add(3, 5) print(result) # 8注意写函数时函数内部的计算结果需要通过return返回给调用方。如果只写print(a b)而不return那函数执行完后结果就“丢”了外部拿不到这个值。这个“return与print的区别”也是新手常见困惑点。2.7 注释与文档字符串写作业和写代码的时候一定要记得加注释。Python的注释用井号#开头也可以在多行字符串里写注释。注释的作用一是帮助自己回忆二是让老师或同事看懂你的思路是代码的一部分。# 计算圆的面积 radius 10 # 使用公式面积 π * r² area 3.14159 * radius ** 2 print(area)2.8 异常处理try-except第一次作业可能不会用异常处理但提前知道绝对不吃亏。当用户输入的格式不对比如输入了字母而不是数字程序会直接崩溃。为了避免这种情况可以用try-except捕获异常。try: age int(input(请输入年龄)) print(明年, age 1) except ValueError: print(输入格式错误请输入数字)这样一来即使输错内容程序也不会崩溃而是给出友好提示。这个技巧在后续的课程项目中会频繁用到。2.9 字符串的常用方法字符串在Python里是处理最频繁的数据类型之一。以下方法建议记牢len(s)获取字符串长度s.strip()去掉首尾空格s.lower() / s.upper()大小写转换s.split(,)按指定字符分割字符串为列表s.replace(a, b)替换子串s.isdigit()判断字符串是否全是数字s Python 第一次作业 print(len(s)) # 19包括空格 print(s.strip()) # Python 第一次作业 print(s.split( )) # [, Python, 第一次作业, ] print(s.isdigit()) # False2.10 运算符优先级与常见写法Python的运算符优先级和数学中的一致先乘除、后加减括号优先。**表示幂运算//表示整除向下取整%表示取余数。print(7 // 2) # 3 print(7 % 2) # 1 print(2 ** 3) # 8判断奇偶就用n % 2是否等于0求末位数字就用n % 10求十位数字就用(n // 10) % 10。这些技巧在做数字类题目时特别有用后面作业实战会用到。3. 作业实战一道题一道题地拆解3.1 经典题一从1加到n题目要求输入一个正整数n计算从1加到n的总和并输出结果。这道题考察的是循环和累加。思路是设置一个变量total 0然后用for循环把每个数加到total上。n int(input(请输入一个正整数)) total 0 for i in range(1, n 1): total i print(1到, n, 的和是, total)运行效果请输入一个正整数10 1到 10 的和是 55如果你想炫技还可以用等差数列求和公式一步到位total n * (n 1) // 2。但注意作业的目的通常是让你练习循环所以老老实实写循环更稳妥公式可以作为验证结果的方法。3.2 经典题二判断奇偶性题目要求输入一个整数判断它是奇数还是偶数。通过n % 2的结果来判断是最高效的方法。n % 2 0说明是偶数否则是奇数。下面是完整代码num int(input(请输入一个整数)) if num % 2 0: print(num, 是偶数) else: print(num, 是奇数)这个题目虽然简单但它包含的知识点是条件判断和取余运算的结合。同样的思路可以延伸到判断一个数能否被3整除、判断闰年能被4整除但不能被100整除或者能被400整除等。3.3 经典题三求最大公约数题目要求输入两个正整数输出它们的最大公约数。这道题有两个思路。第一个思路是暴力枚举——从较小的那个数往下找找到第一个能同时整除两个数的数就是最大公约数a int(input(请输入第一个数)) b int(input(请输入第二个数)) small a if a b else b # 找到较小的数 for i in range(small, 0, -1): # 从大到小循环 if a % i 0 and b % i 0: print(最大公约数是, i) break第二个思路是更优雅的“辗转相除法”欧几里得算法用较大数除以较小数然后用余数替换较大数反复进行直到余数为0最后的除数就是最大公约数。a int(input(请输入第一个数)) b int(input(请输入第二个数)) x, y a, b while y ! 0: x, y y, x % y print(a, 和, b, 的最大公约数是, x)这里用到了多变量同时赋值的语法x, y y, x % y本质上相当于temp x % y; x y; y temp。这样的写法更Pythonic但初学者如果对赋值逻辑不熟可以先写完整版再考虑简化写法。3.4 经典题四九九乘法表题目要求输出9行九九乘法表格式为1x11。这道题是嵌套循环的经典练习。外层循环控制行数1到9内层循环控制列数1到当前行数。for i in range(1, 10): for j in range(1, i 1): print(f{j}x{i}{i * j}, end\t) print() # 换行f{j}x{i}{i * j}是f-string格式化写法花括号里的内容会被变量的值替换。end\t表示每个式子之间用制表符分隔而不是换行这样排列出来对齐效果更好。输出效果1x11 1x22 2x24 1x33 2x36 3x39 1x44 2x48 3x412 4x416这道题的关键点在于内层循环的range(1, i 1)——它让每一行只输出到与行号相等的列数这就是乘法表是三角形而非方阵的原因。3.5 经典题五判断素数题目要求输入一个大于1的整数判断它是否为素数。素数的定义是只能被1和它本身整除的数。最简单的思路是遍历从2到n-1的所有数看有没有能整除n的。如果找到了n就不是素数否则就是素数。n int(input(请输入一个大于1的整数)) is_prime True for i in range(2, n): # 从2到n-1 if n % i 0: is_prime False break if is_prime: print(n, 是素数) else: print(n, 不是素数)这里用了一个is_prime布尔变量作为“旗帜”循环中一旦发现整除就改为False并退出循环。这个“旗帜变量”的思路在很多编程题目中都会用到值得熟练掌握。优化版本循环范围可以缩小到range(2, int(n ** 0.5) 1)因为如果n有大于平方根的因子那必然也有小于平方根的对应因子所以只需检查到平方根即可。这个优化对大数据量的情况很有意义。3.6 作业提交前的自检清单提交作业前建议逐项对照以下清单检查代码能正常运行没有任何错误输入边界值如0、负数、最大允许值时程序不会崩溃代码中有适当的注释和清晰的变量命名输出格式与题目要求完全一致包括空格、换行、大小写没有使用未学过的、超出作业范围的复杂技巧除非你解释清楚文件名规范例如homework1.py不要用“新建文档123”这样的名字4. 常见报错排查这些坑我全替你踩过4.1 ModuleNotFoundError 与import的坑有一类报错非常常见ModuleNotFoundError: No module named xxx。比如作业中要用到requests库或cv2OpenCV库直接import cv2就报错了。原因很简单第三方库没有安装。解决办法是用pip安装命令格式是pip install 库名。在命令提示符或VsCode终端中运行pip install cv2 pip install requests pip install numpy但如果用的是“python -m pip”这种方式或者系统中有多个Python版本比如装了Anaconda又装了官方版pip可能装到了错误的环境。Windows下可以尝试python -m pip install cv2但这里还要注意一个细节pip install cv2并不一定能正确安装OpenCV。正确做法是pip install opencv-python安装后代码里才可以用import cv2。这个“库名”和“导入名”不一致的情况对于新手来说就是一个大坑。类似的还有PIL要装pillow库、np其实是numpy库。4.2 SyntaxError语法错误SyntaxError: invalid syntax是最常见的报错通常意味着代码中有拼写错误、括号没配对、冒号漏写、字符串引号没闭合等。解决方案是从报错位置往前看几行一般就能找到问题。比如这段代码if x 10 print(x大于10)缺少冒号Python会报SyntaxError: invalid syntax并把光标指向if这一行。加上冒号就能解决。这里提醒一句Python的语法错误通常报在“发现问题的那一行”但实际错误位置可能在前一行。4.3 NameError变量未定义NameError: name xxx is not defined的意思是代码里用了一个还没定义的变量。常见原因有变量名拼写错误比如定义了total使用的时候写成了totle使用了变量但在前面的分支中该变量没有被赋值把变量名和字符串搞混了比如写了print(name)但name只是一个字符串应该写成print(name)这个名字错误算是新手最常犯的错误之一。排查时先检查变量名的拼写是否前后一致再检查变量是否在所有路径上都被赋值了。4.4 IndentationError缩进错误IndentationError: unexpected indent说明代码的缩进出了问题——多加了空格或者缩进不统一。Python对缩进极度敏感同一个代码块里的缩进必须完全一致。最常见的场景是用VsCode写代码时默认用4个空格缩进但如果你从网页上复制代码网页里的缩进可能是tab字符混在一起就会报错。解决办法是在VsCode里全选代码然后ShiftTab或Tab统一缩进或者在设置里把editor.insertSpaces设为true。4.5 TypeError类型错误TypeError: unsupported operand type(s) for : int and str就是典型的类型错误。正如前面讲的整数和字符串不能直接相加。排查思路是检查参与运算的变量的类型必要时使用type()函数打印类型确认x input(请输入数字) print(type(x)) # class str还可以用isinstance(x, int)来检查类型。知道了类型之后用int()或str()做出相应的转换就行。4.6 IndexError索引越界IndexError: list index out of range表示你访问的元素索引超出了列表的范围。比如一个列表只有3个元素你取了list[3]就报错了因为索引从0开始最大只能取到list[2]。这种错误在遍历列表时尤其容易出现。比如你用for i in range(len(list))的时候如果循环体内恰好又修改了列表的长度就会出现问题。建议用for item in list这种遍历方式减少索引出错的风险。4.7 程序运行后什么都没有输出这种情况一般是代码逻辑没进入输出语句。可能原因有if条件判断错误导致分支没进去循环条件本身就不成立比如while条件一开始就是False代码里没有print语句print语句写在函数内部而函数从未被调用排查办法在关键位置加临时print调试语句打印中间变量的值。这是一种最简单也最有效的调试手段新手阶段完全够用。4.8 中英文标点混用导致的错误写代码的时候所有的标点符号都必须是英文输入法下的标点。比如字符串引号、逗号、括号用中文的“”或者“”都会被Python识别为非法字符。print(“Hello”) # 错误的引号 print(Hello) # 正确的引号这种错误的报错往往是SyntaxError: invalid character或者在字符串没有被正确终止时整个代码被解析成一团乱麻。有时候肉眼很难察觉可以把光标移到报错位置附近用VS Code高亮功能检查。有一个老办法是检查报错行号附近是否有中文标点。5. 让第一次作业出彩的三个技巧5.1 用面向对象改写作业代码如果你的作业要求只是简单地写几个函数你可以试着用类Class的方式组织代码。这种写法虽然稍微复杂一点但能展现出你对代码结构的理解。class Calculator: def __init__(self): self.total 0 def sum_to_n(self, n): self.total sum(range(1, n 1)) return self.total def is_prime(self, n): if n 2: return False for i in range(2, int(n ** 0.5) 1): if n % i 0: return False return True calc Calculator() print(calc.sum_to_n(100)) # 5050 print(calc.is_prime(17)) # True关键点是在类的__init__方法里初始化属性用self.xxx来表示实例变量。如果你在作业里用了这个写法建议在代码注释里说明你参考了什么资料、为什么要这样设计这样老师能看懂你的思路也会觉得你有学习主动性。5.2 用argparse给作业加上命令行交互一般的作业是input()输入但如果你有兴趣更进一步可以学习argparse模块让你的程序支持命令行参数输入。例如import argparse parser argparse.ArgumentParser(description计算1到n的和) parser.add_argument(n, typeint, help正整数) args parser.parse_args() total sum(range(1, args.n 1)) print(1到, args.n, 的和是, total)运行方式变为python sum.py 10这种交互方式在处理批量测试、自动化验证时非常方便。如果你是计算机专业的学生早点接触argparse对后续学习也有帮助。5.3 用assert做代码自检在作业代码里加几个assert断言可以自动验证函数是否正确def add(a, b): return a b assert add(1, 2) 3 assert add(-1, 1) 0 assert add(0, 0) 0 print(所有测试通过)assert后面的条件如果为True程序继续运行如果为False程序抛出异常。这样你在提交作业前运行一次就知道代码逻辑还有没有问题了。这算是我个人很喜欢的一个小技巧它把“自己验证”变成了程序自动验证也让老师看到你有测试意识。6. 写在最后踩过这些坑才叫学过Python回头想想第一次写Python作业的时候我光是环境就折腾了一个晚上。明明代码照着抄的结果就是跑不起来。后来才明白与其着急写代码不如先把环境理解了、工具用熟了、基础语法过一遍。磨刀不误砍柴工。再分享一个小技巧写作业的时候不要一口气把整段代码写完再运行最好每写一小段就运行一次确认这一小段没问题再继续往下写。这样可以把“找bug”的范围控制得非常小出错了也一眼就能看出来。如果是一次性写了几十行再运行报错之后排查起来就非常痛苦。第一份作业的意义不在于题目有多难而在于让你完整体验一遍“分析问题 → 设计思路 → 编写代码 → 调试运行 → 提交成果”的过程。这个过程走通之后后面再学函数、文件操作、类、爬虫、数据分析这些内容都会顺很多。如果你做完了第一个作业一定记得把代码留好过一个月再回来看你会惊讶于自己居然写过这么“稚嫩”的代码也会更清楚地看到自己的进步。