Python第一次作业全攻略:从环境搭建到避开新手坑
2026/9/9 11:04:07 网站建设 项目流程

第一次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 FilesD:\软件\Python下,否则后续某些库编译时会因为路径解析出幺蛾子。

1.2 编辑器怎么选:VS Code还是PyCharm

Python代码用记事本写也能运行,但效率太低,等作业代码超过50行,你就会发现没有语法高亮和自动补全的日子简直是在坐牢。第一次作业我推荐从VS Code入手,免费、轻量、插件生态丰富。PyCharm也很好,但社区版功能对新手足够,专业版要收费,而且启动比VS Code重不少,如果你电脑内存紧张,VS Code会更友好。

VS Code装好之后,需要装一个Python扩展(扩展商店搜“Python”,作者是Microsoft的那个)。装完打开一个.py文件,按Ctrl+Shift+P,输入Python: Select Interpreter,选择你刚安装的Python解释器。这一步很关键,不选解释器的话,VS Code虽然能写代码,但运行、调试、语法提示全都用不了,你会以为是自己代码写错了,其实是解释器没选对。

PyCharm用户则在设置里找到Project Interpreter,同样指定Python路径就行。第一次作业阶段,编辑器不需要装太多花哨插件,一个Python扩展加上一个自动保存设置就够用了。等你后面写爬虫、做数据分析,再慢慢加插件不迟。

1.3 虚拟环境:现在不做,以后会后悔

第一次作业可能只用到Python自带的库,不涉及第三方库,但你要知道有一个东西叫虚拟环境。它的作用是为每个项目单独维护一套依赖库,互不干扰。想象一下,你有一个项目A需要numpy 1.24,另一个项目B需要numpy 2.0,如果都装到全局环境里,就会互相打架。虚拟环境就是给每个项目开一个独立的“小房间”,A项目装1.24,B项目装2.0,互不干扰。

创建虚拟环境的命令很简单,在项目文件夹下打开终端,执行:

python -m venv venv

这会在当前目录下生成一个venv文件夹,里面装着一套独立的Python解释器和pip。激活它:

  • Windows:venv\Scripts\activate
  • macOS/Linux:source 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-string:

result = 42 print(f"结果是{result}")

f-string是Python 3.6之后引入的格式化方式,用花括号把变量嵌进字符串里,方便又直观。第一次作业建议直接学会它,比用%sformat()更省事。

2.2 条件判断与循环:程序的“岔路口”和“跑圈”

作业里只要涉及逻辑,就离不开ifforif的语法核心是“条件后面加冒号,下一行必须缩进”。

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到5,range(1, 10, 2)生成1、3、5、7、9,步长为2。这个range函数的三个参数是“起点、终点、步长”,终点是不包含的,很多同学栽在range(1, 5)到底输不输出5这个问题上。记住:前闭后开,包含起点不包含终点。

while循环要注意设置退出条件,否则就是死循环,程序一直跑不停止。迫不得已时可以按Ctrl+C强制中断。

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 函数的定义与调用:让代码能“复用”

第一次作业的代码可以不写函数,但如果你写了,就会发现自己代码的层次瞬间清晰了。函数的定义用def

def 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初学者的共同记忆:“从控制台输入一串以空格分隔的数字,统计每个数字出现的次数,按出现次数从高到低输出”

这道题第一次见到会觉得无从下手,但你把它拆开就清晰了:

  1. 读取用户输入的字符串
  2. 按空格分割成列表
  3. 遍历列表,统计每个数字出现的次数
  4. 按次数排序
  5. 输出结果

写代码之前先在草稿纸上或注释里把这个流程写出来,你会发现整个程序其实就是这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(), key=lambda x: x[1], reverse=True)

counter.items()返回的是“键值对”的列表,每一项是一个元组,比如('3', 2)key=lambda x: x[1]意思是“以每一项的第二个元素(次数)作为排序依据”,reverse=True表示降序。如果你看不懂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(), key=lambda x: x[1], reverse=True) 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里有一个快捷键:Ctrl+Shift+P,输入“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 提交作业前的检查清单

作业写完不是能跑就完事了,交之前建议按下面这个清单过一遍:

  1. 代码能不能在干净环境下运行?如果别人拿到你的.py文件,用Python直接执行,会不会因为缺少某个库而报错。第一次作业一般只用到内置库,问题不大,但如果用了第三方库,记得写清楚依赖。
  2. 代码有没有能跑但不符合题意的隐患?比如题目要求“按出现次数从高到低”,你只统计了次数没排序,或者排序后是升序而不是降序。
  3. 边缘输入会不会崩?输入为空、输入了多余空格、输入了负数、输入了超大数,这些情况会不会报错。如果题目没有特殊要求,至少要在代码里对空输入做个友好提示。
  4. 命名是否规范?变量名用英文,不要用abc这种没有语义的名字,至少用numscorecounter这样的词。函数名用动词开头,比如calc_averageget_user_input
  5. 有没有加注释?第一次作业不要求注释多详细,但关键步骤建议写一两句说明,这既是给老师看的,也是给自己以后看的。我自己的习惯是“函数开头写一句用途,复杂逻辑前面写一句思路”。

5. 作业交了之后,下一步怎么往前走

第一次作业通过之后,你就可以从“Hello World”毕业,进入真正能写点小玩意的阶段了。我见过太多人把第一次作业当成全部,交完就丢,其实第一次作业的完整流程——拆题、写码、调试、交作业——才是你真正应该带走的东西。接下来可以试着做几个小练习练手,比如写一个简单的计算器,支持加减乘除和括号;或者写一个猜数字游戏,让程序随机生成一个1到100之间的数,用户猜,程序提示“大了”或“小了”;再比如那个经典的“李白打酒”问题,用循环和条件判断就能解,是锻炼逻辑的好题目。这些都不需要第三方库,只需要Python基础语法加一颗愿意折腾的心。

等你把这些小练习写顺畅了,再往前走的路就看兴趣了:想做自动化办公的,可以学openpyxl操作Excel;对网络感兴趣,可以学requests和BeautifulSoup写个爬虫;喜欢数据分析,可以学numpy、pandas和matplotlib;对游戏有兴趣,pygame能帮你实现很多小游戏。我第一次作业做完之后,自己写了个判断回文数的小程序,虽然只有十几行,但那会第一次感受到“用代码解决问题的快感”,这种快感会推着你继续学下去。

最后分享一个我自己的经验:遇到不会的问题,先自己琢磨10分钟,再搜索20分钟,实在不行再问别人。这个过程里你搜索资料的路径、看报错信息的敏锐度、试错的耐心,都会慢慢变成你真正的编程能力。第一次作业只是个开始,编程这条路很长,但第一步跨出去,后面就会越来越顺。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询