☰
40组Python基础语法代码,零基础一周敲出编程手感
2026/10/13 20:05:47 网站建设 项目流程

你有没有过这种经历:Python 教程看了十来个视频,变量、循环、字符串每个名词都似懂非懂,关掉视频想自己写个程序,手放在键盘上却半天落不下去。我带零基础学员第一周时,从来不讲空泛的理论,只安排一件事——把 40 组完整的 Python 基础语法代码原样敲一遍,然后改一改、拆一拆、故意弄坏再修好。语法这东西,靠“看”是记不住的,得靠“敲”才能进脑子。这篇文章就是那一周的完整训练方案,覆盖 Python 基础语法里最高频的输入输出、字符串、条件分支、循环、列表、字典、函数、文件读写和异常处理,适合完全没写过代码、想快速跑通语法、又不想被理论劝退的人直接照着练。

1. 为什么要用“40组完整代码”入门,而不是看视频和背概念

1.1 语法不是学明白的,是敲明白的

我自己学 Python 的时候绕了不少弯路。当时喜欢囤教程、记笔记,把所有函数签名抄得整整齐齐,感觉特别充实。真到写脚本处理 Excel 时,第一行import之后就开始卡壳。后来我发现一个扎心的事实:编程能力的增长点不在“理解”上,而在“接触量”上。你每敲一行代码,手指和脑子之间就会多建立一条通路;你每改一个参数看到输出变化,语法规则才会从“书本知识”变成“身体记忆”。

所以这套训练里的 40 组代码,不是让读者当阅读材料看的,而是要一笔一画敲出来的。每一组都是一个“最小可运行单元”,跑起来能看到输出,报错时控制台会给出提示。这个设计参考的都是零基础学员最常见的卡点:不是不知道某个功能存在,而是不知道这段代码写出来长什么样、能产生什么结果。

1.2 这一周七天的节奏怎么安排

40 组听起来多,拆到 7 天里,每天其实只有 5-6 组。我的建议是每天抽 30-60 分钟,集中时间敲完一个阶段的代码,然后当天睡前再看一遍自己敲的内容,回忆每组代码解决什么问题。这样比周末一次性突击 7 小时效果好得多,因为语法积累需要“发酵”时间。

日期练习范围主题知识点关键词
第1天代码001-006输出、变量、运算、输入、类型转换print、赋值、算术、input、int/float/str
第2天代码007-013字符串操作format、upper/lower、find/replace、split/join、切片
第3天代码014-019条件判断if/elif/else、逻辑运算、三元表达式、猜数字
第4天代码020-025循环控制while、for、break/continue、九九乘法表、推导式
第5天代码026-032组合数据类型列表、元组、字典、集合、类型互转
第6天代码033-038函数定义、参数、返回值、作用域、lambda
第7天代码039-040文件与异常open/with、try/except,以及综合复习

执行这周计划时,每敲完一组代码,建议顺手在代码后面加一个print()看看某个变量的值,或者把数字、字符串换掉观察变化。这个习惯从第一周开始养成,后面学复杂项目会受益很多。

2. 开跑前先配环境:版本、编辑器、PATH三个坑一次说清

2.1 Python 到底装哪个版本,装完怎么验证

直接去官网下载 Python 3.11 或 3.12,不要碰 2.x 的老古董,也不要选 Beta 测试版。安装时有一个全世界新手都容易踩的坑:安装向导第一页底部的Add Python to PATH复选框,一定要勾上。这个选项决定了你在命令行敲python时系统能不能找到它,不勾后面会多出一堆麻烦。

装完之后打开命令行(Windows 是 CMD 或 PowerShell,macOS/Linux 是终端),输入:

python --version

如果看到类似Python 3.12.4的输出,环境就正常了。如果提示“python 不是内部或外部命令”“command not found”,大概率是刚才那个复选框没勾。解决办法很简单:重新运行安装包,选择 Modify,把 Add Python to PATH 勾上;或者手动把 Python 安装目录添加到系统环境变量的 Path 里,这一步网上一搜就有图解,不用慌。

2.2 编辑器三选一:IDLE、VS Code、Thonny

编辑器这块,我的建议反而和很多推荐不一样:第一周别急着上最花哨的工具,够用就行。

  • 如果只想最省事,直接用安装包自带的IDLE。它长得很朴素,但能写能跑,报错信息完整,足够完成前 40 组代码。
  • 如果愿意多花 10 分钟配置,用VS Code体验会更好。装完 Python 扩展后,它自带智能提示、代码高亮、单文件运行按钮,比较符合以后实际工作的环境。
  • Thonny是专门给教学场景设计的编辑器,变量内存可视化做得很好,适合一点概念都没有的新手。

我不建议第一周直接上 PyCharm。不是它不好,而是完整版的索引、配置项对刚接触编程的人是个干扰项。第一周的核心目标是把代码敲熟,编辑器能高亮、能运行就够了。

2.3 第一天最容易卡住的“命令不存在”问题

有个情境我见得太多了:学员装完 Python,打开 IDLE 敲了第一行print("Hello"),一切顺利。第二天想用命令行运行脚本,打开 CMD 输入python 文件名.py,结果被系统提示“不是内部或外部命令”。这就是 PATH 没配好。

另外提醒一句:如果你的电脑上同时装了 Microsoft Store 里的 Python 和官网的 Python,命令行里可能会启动某个“未知版本”。遇到这种情况,先运行where python看路径列表,把不需要的版本卸载掉,只留一个,避免混乱。

3. 40组代码全清单:题目、覆盖知识点、运行注意点

3.1 第1-6组:输出、变量、输入与类型转换

前 6 组代码是整个 Python 世界的“第一块积木”:怎么把内容显示到屏幕上,怎么把数据存进变量,怎么做算术运算,怎么让程序接收用户输入。这里的核心目标不是学 API,而是建立“程序是逐行执行的”这个基本直觉。

编号代码主题核心知识点最需要注意的点
001你好Pythonprint()括号里的引号不能丢
002变量与赋值变量名规则、=变量名不能以数字开头
003数字四则运算+ - * / // % **/得出浮点数,//才是整除
004字符串拼接+、*数字和字符串不能直接拼接
005输入年龄input()接收到的永远是字符串
006类型转换int()、float()、str()输入后要运算必须先转数字

重点提示:第 005 组会把很多人绕晕。input()返回的是字符串,假如你输入 18,得到的其实是"18",不是数字 18。想拿它做加法、比较大小,必须先转成int或float。这是后面所有类型 Bug 的源头。

3.2 第7-13组:字符串的常用操作

字符串在 Python 里是高频数据类型,日常写脚本处理日志、清洗数据几乎绕不开它。这 7 组代码聚焦字符串的格式化、大小写、查找替换、分割合并和切片,学完以后基本能应付大多数文本处理场景。

编号代码主题核心知识点最需要注意的点
007f-string 格式化f"{变量}"f 前缀后的大括号里才能放变量
008大小写转换upper()、lower()、strip()这些方法不会改原字符串
009查找与替换find()、replace()find()找不到返回 -1
010分割与合并split()、join()split的结果是列表
011字符串切片s[开始:结束:步长]切片左闭右开,不包含结束位
012遍历字符串for ch in s字符串可以直接被循环
013内容判断isdigit()、endswith()常用于输入校验和文件名校验

重点提示:008 组的upper()、lower()这类方法不是“就地修改”,而是“返回一个新字符串”。如果你只写name.upper()而不接收返回值,原字符串不会有任何变化。这是新手最容易忽略的小细节。

3.3 第14-19组:条件判断的四种写法

从第 14 组开始,程序不再是一条直线跑到底,而是会根据条件走不同分支。条件判断是程序逻辑的骨架,这 6 组覆盖单分支、双分支、多分支、嵌套、逻辑运算和三元表达式,按顺序写完,一个小的“猜数字游戏”就能实现了。

编号代码主题核心知识点最需要注意的点
014单分支判断ifif 下面的语句必须缩进
015双分支判断if...elseelse 后面没有条件
016BMI计算器if-elif-else多个分支只会命中一个
017成绩等级区间判断判断顺序会影响结果
018猜数字and、or、not逻辑运算优先级
019三元表达式值 if 条件 else 值适合简单判断,别写太复杂

重点提示:017 组写成绩等级时,我经常看到有人把区间顺序写反。比如先判断>= 60输出“及格”,再判断>= 90输出“优秀”,结果 95 分永远输出“及格”。原因就是第一个条件已经命中,后面的分支不会再执行了。写多分支时,顺序要有逻辑,一般从大范围到小范围,或者反过来。

3.4 第20-25组:循环、推导式、九九乘法表

循环是让程序自动化处理重复工作的核心机制。第 20-25 组的目标是让人熟练使用while和for,理解循环控制语句break、continue的作用,同时通过九九乘法表练习双重循环,再用列表推导式感受 Python 的简洁风格。

编号代码主题核心知识点最需要注意的点
020while累加while循环必须有终止条件,否则死循环
021for与rangefor i in range(n)range 不包含终点值
022跳过程序break、continuebreak 结束整个循环,continue 跳过本次
023九九乘法表双重循环内层循环范围随外层变化
024列表推导式[x for x in...]推导式的语法顺序
025带索引遍历enumerate()同时拿索引和元素

重点提示:020 组写while时,最容易出现的情况是忘记在循环体里更新条件变量,一运行程序就直接卡死。真遇到这种情况,在 VS Code 或 IDLE 里按 Ctrl+C 可以中断运行,不用砸电脑。另外 024 组的列表推导式看着很高级,其实语法顺序就是“先写输出表达式,再写循环,最后写筛选条件”。

3.5 第26-32组:列表、元组、字典、集合

这 7 组代码进入组合数据类型部分。列表和字典是以后写脚本使用最频繁的两种容器,元组和集合则各有特定用途。第 26-32 组不追求讲得多深,关键是搞清楚它们的基本操作和适用场景,并掌握多种类型之间的转换。

编号代码主题核心知识点最需要注意的点
026列表索引与切片list[i]、list[a:b]越界会报 IndexError
027列表增删改append()、insert()、remove()、pop()remove 按值删,pop 按下标删
028元组与解包tuple、a, b = b, a元组定义后可修改会报错
029字典创建访问dict[key]键不存在会报 KeyError
030字典遍历items()、keys()、values()遍历字典默认只拿键
031集合作运算去重、交集、并集集合无序且元素不重复
032类型互转list()、tuple()、set()、dict()字典转列表本质转的是键

重点提示:029 组里,访问字典不存在的键时程序会直接崩溃。养成用d.get(key)的习惯,它在键不存在时返回None而不是报错,更适合做数据查找。第 031 组通过set()去重非常实用,比如从列表里筛出所有不重复元素,一行代码就搞定。

3.6 第33-38组:函数与作用域

函数是“把一段逻辑打包起来,重复使用”的工具。到这一阶段,代码从“流水账”变成“有结构的作品”。这 6 组覆盖了函数的定义、参数传递、默认值、返回值、多个返回值、作用域以及 lambda 匿名函数,足够支撑后续写小项目。

编号代码主题核心知识点最需要注意的点
033定义函数def 函数名():函数体也要缩进
034参数传递位置参数、关键字参数两种参数可以混用,但顺序有要求
035默认参数def f(x=10)默认参数在定义时求值
036多个返回值return a, b返回的是元组
037变量作用域global函数内改全局变量需声明
038lambda表达式lambda x: x * 2适合配合 sorted、map 使用

重点提示:037 组是很多教材会跳过但实际很重要的知识点。函数内部用=赋值时,默认会创建局部变量,不会改外部的同名变量。想在函数里修改全局变量,必须先写global 变量名,这是一个非常经典的面试题,第一周就能接触到。

3.7 第39-40组:文件与异常

最后两组是“让程序落地的关键”。文件读写让数据可以持久化保存,异常处理让程序在遇到错误时不会瞬间崩溃,而是能给出友好提示。这两组代码学完,基础语法的大框架就完整了。

编号代码主题核心知识点最需要注意的点
039文件读写open()、with、read()、write()记得指定 encoding 和关闭文件
040异常处理try/except/else/finally异常按类型捕获,别裸 except

重点提示:039 组里,新手最容易犯的错是只写open()不写close()。用with open(...) as f:这种写法可以自动关闭文件,少掉很多隐患。另外读文本文件时最好指定encoding="utf-8",不然在中英文混排文件上可能碰到编码乱码的问题。

4. 逐行拆解8组关键代码:从会抄到会写

4.1 代码006:类型转换,很多人从这组开始懵

# 代码006:输入两个数字并计算它们的和 a = input("请输入第一个数:") b = input("请输入第二个数:") print("直接加的结果:", a + b) a_num = int(a) b_num = int(b) print("转换后加的结果:", a_num + b_num)

运行一下你就会看到,直接加两个输入,得到的是"1218"而不是30。因为input()返回字符串,"12" + "18"在字符串里是拼接。int()把字符串变成整数之后,+才是真正的加法。这个“类型”概念,是新手从抄代码迈向写代码的第一道分水岭。

4.2 代码016:BMI计算器,把条件分支串成真实场景

# 代码016:BMI计算器 height = float(input("请输入身高(m):")) weight = float(input("请输入体重(kg):")) bmi = weight / (height ** 2) print("你的BMI是:", round(bmi, 2)) if bmi < 18.5: print("偏瘦") elif bmi < 24: print("正常") elif bmi < 28: print("偏胖") else: print("肥胖")

这组代码把输入、类型转换、算术运算、多分支判断全部串起来了,是前 16 组的一个“综合小测验”。这里的elif序列展示了条件分支的“短路”特性:一旦命中某个条件,后面所有分支都不会再判断。这种链式写法在以后的规则判断里非常常见。

4.3 代码024:列表推导式,学完能看懂很多开源代码

# 代码024:1到10之间偶数的平方 even_squares = [x ** 2 for x in range(1, 11) if x % 2 == 0] print(even_squares)

输出是[4, 16, 36, 64, 100]。列表推导式的读法是:先看for x in range(1, 11),这是循环;再看if x % 2 == 0,这是筛选条件;最后看最前面的x ** 2,这是要放进新列表的表达式。很多开源代码和教程会大量使用这种写法,第一次见到可能会愣住,拆开看其实就是“循环加筛选加生成”。

4.4 代码030:字典遍历,处理带名字的数据

# 代码030:遍历字典的键和值 student = {"name": "小明", "age": 18, "city": "上海"} for key, value in student.items(): print(key, "->", value)

.items()返回的是(键, 值)的元组对,可以直接用key, value两个变量接住,这是 Python 里很常见的解包操作。学完这组代码后,处理多组类似学生成绩、配置信息、物品库存等带名字的数据时,字典会是你最顺手的工具。

4.5 代码037:变量作用域,经典面试考点

# 代码037:在函数中修改全局变量 count = 10 def add_one(): global count count += 1 add_one() print(count)

如果没有global count这一行,函数内部会创建局部变量count,外部的count不会改变。很多新手在这个点上百思不得其解,因为直觉上“函数里的代码应该能访问外面的变量”。访问可以,但赋值会触发局部变量规则。这个机制理解后,再看各类递归调用和闭包代码都会更轻松。

4.6 代码039-040:文件与异常,让程序变得像真正的软件

# 代码039:用 with 写文件再读回来 with open("notes.txt", "w", encoding="utf-8") as f: f.write("第一行\n") f.write("第二行\n") with open("notes.txt", "r", encoding="utf-8") as f: content = f.read() print(content)
# 代码040:异常处理示例 def safe_div(a, b): try: result = a / b except ZeroDivisionError: print("除数不能为0") else: print("结果是", result) finally: print("计算结束") safe_div(10, 2) safe_div(10, 0)

这两组代码的共同点是“考虑到了程序可能会出错”。文件可能不存在、编码可能不对、除数为零、用户输入非法,程序越健壮,就越需要这种容错机制。第一周不必把所有异常类型都背下来,只要理解try/except是给程序穿了一层防护甲就够了。

5. 第一周踩坑合集:缩进、input类型、列表引用三大坑

5.1 IndentationError:新手第一道坎

IndentationError: expected an indented block

这个报错几乎每个初学者都会遇到。原因很直白:Python 用缩进表示代码块,if、for、while、def后面的下一行必须有缩进。解决方法是统一用 4 个空格做缩进,别混用 Tab 和空格,尤其是在不同编辑器之间切换的时候。VS Code 右下角可以设置当前文件的缩进方式,我会直接设成 Spaces: 4,一劳永逸。

5.2 “20” > “100” 为 True:类型转换的隐形炸弹

print("20" > "100") # True print(int("20") > int("100")) # False

字符串比较是按字符逐个比的,"20"和"100"比,先比第一个字符"2"和"1",因为"2"大于"1",所以结果是True,这完全不是数学上的大小判断。上一周如果有人没做类型转换就直接拿 input 的结果比大小,很可能得到完全反直觉的输出。处理用户输入时,先想清楚“我手里的是字符串还是数字”,能避开一大半逻辑错误。

5.3 改一个变量,另一个跟着变:列表引用的坑

a = [1, 2, 3] b = a b.append(4) print(a) # [1, 2, 3, 4],a 也被改了

b = a这句并没有复制列表,而是让b和a指向同一个列表对象。改b等于改a。想要真正的副本,用切片或copy()方法:

b = a.copy()

这种“引用 vs 复制”的概念在第一周可以先记结论,等学到函数参数传递时会再次遇到。提前知道有这回事,遇到列表莫名其妙被改时起码有个排查方向。

6. 第7天自测:不看书把这几题写出来,就算过关

6.1 三道快速自测题

闭卷的情况下能独立写出这三道题,说明这一周的语法底子初步打牢了。

  1. 输入两个数字,输出较大的那个。
  2. 用循环计算 1 到 100 之间所有偶数的和。
  3. 写一个函数,接收一个字符串,返回其中大写字母的个数。

这三道题分别对应条件分支、循环、字符串遍历与函数。如果写不出来,回到对应编号的代码组,把代码抄两遍再试一遍。抄代码不丢人,丢人的是抄完不运行。

6.2 一个收尾小项目:给全家人的成绩统计

第 40 组代码学完后,可以用一个综合小项目收尾。这个项目把循环、列表、input、类型转换、max、min、sum 全部串起来:

# 综合练习:成绩统计 scores = [] while True: line = input("输入成绩,直接回车结束:") if line == "": break scores.append(float(line)) if scores: print("总人数:", len(scores)) print("平均分:", round(sum(scores) / len(scores), 2)) print("最高分:", max(scores)) print("最低分:", min(scores))

这个程序虽然短,但是你自己能写出来和只能看懂之间有本质区别。第一周结束的标准不是“看懂了 40 组代码”,而是“离开代码也能把类似的小程序写出来”。

6.3 学完这一周,你已经能看懂哪些代码了

很多人学 Python 是冲着写爬虫、做自动化、处理 Excel 数据来的。第一周结束后,你已经能看懂网上那些“Python 爱心代码”里的循环结构,能理解猜数字游戏的随机数逻辑,也能读懂带判断和循环的多数入门脚本。后面的路,无非是在这个基础上叠加第三方库和更复杂的数据结构。

我带学员时感受最深的一点是:进步最快的人,往往不是最聪明的,而是每天老老实实把代码敲一遍、遇到报错不急着问、先自己读一遍报错信息的那个人。报错信息不是对你的惩罚,而是程序在告诉你它哪里不舒服。把第一周的 40 组代码按这个节奏走完,你会发现自己对“语法”这两个字的恐惧,已经消失了大半。

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

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

立即咨询