Python 330道练习题:七天刷完基础语法与编程思维

发布时间:2026/8/30 2:22:38
Python 330道练习题:七天刷完基础语法与编程思维 很多人在学 Python 的时候都会遇到一个特别尴尬的阶段书看完了视频也刷了语法好像都认识但一打开编辑器就不知道自己能写什么。看别人的代码觉得“哇好简单”自己一动手就报错最后只能反复去复制粘贴别人的示例越学越虚。这个问题的根源不是你的智商不够也不是 Python 太难而是输入和输出严重不成比例。你一直在“看编程”却很少“写编程”。编程是一项手艺活眼过千遍不如手过一遍。所以现在很多人开始用“刷题”的方式来学 Python。今天这篇文章要聊的这套 Python 330 道练习题就是这样一个存在。从标题到内容它走的是最基本、也最有效的路线每天练一道循序渐进用一周多点的时间把 Python 基础语法、逻辑思维、常见算法和工程习惯全部过一遍。这篇文章我想和你认真拆一拆这套练习题到底是什么水平、到底该怎么用、里面每个阶段你会碰到什么坑以及作为一个已经有几年开发经验的人我怎么看这种“刷题式学 Python”的思路。先说我的判断这套 330 道练习题不是天才速成手册但它是目前新手能拿到的、性价比极高的 Python 基础训练场。它的核心价值不是教会你某个炫技的框架而是帮你把 Python 的语法细节、编程基本功、逻辑拆解能力和调试能力一次性打扎实。读完这篇文章你会得到一份完整的学习路线图环境怎么搭、练习题怎么分类、每天怎么安排、遇到的报错怎么排查、学完之后下一步该做什么。文章会提供不少可以直接复制的代码和分析建议收藏备用。1. 为什么你需要一套成体系的 Python 练习题先问一个问题你学 Python 的最终目的是什么很多人会说“我想学爬虫”“我想做数据分析”“我想搞人工智能”。这些都是好目标但问题是这些方向都建立在 Python 基础语法和编程思维之上。一个连列表切片都写不利索的人不可能直接上手爬虫一个连函数参数都理不清的人不可能写好数据处理脚本。练习题系统解决的最大问题是帮你把“知识点”变成“熟练技能”。举个例子。你在教程里看到for i in range(10)你觉得自己会了。但练习题里会以多种方式反复考你比如用 for 循环计算 1 到 100 的和用 for 循环打印九九乘法表用 for 循环遍历字符串并统计字母出现次数做第一道题时你在回忆语法做第二道时你在理解边界做到第三道时你才真正把循环刻进脑子里看到类似需求的第一反应是“用 for 加 range 加累加”。这套 Python 练习题最大的特点就是覆盖面广。从最简单的print(Hello World)到面向对象、文件处理、异常捕获等中高级主题全部按难度分层、按知识点归类。它不是某个教程的课后习题也不是一本教材的碎片练习而是一条完整的学习动线。所以如果你现在处于“学过语法但不敢写项目”的阶段或者“刚入门不知道下一步干嘛”的阶段这套练习题非常适合你。2. Python 核心基础盘点你练习的是什么动手刷题之前有必要把 Python 基础语法体系快速梳理一遍。因为练习题本质上是“题目驱动的语法复习”你不需要先把语法全部学完再刷题而是可以一边做题一边把语法盲区补上。2.1 变量和数据类型Python 是动态类型语言变量不需要提前声明类型。这在初学阶段非常友好但也容易让人忽略类型问题。# 常见的数据类型 name Python # str 字符串 count 330 # int 整数 average 88.5 # float 浮点数 is_valid True # bool 布尔值 scores [78, 92, 88] # list 列表 student {name: 小明, score: 92} # dict 字典练习题中会出现大量“数据类型转换”“类型判断”“列表和字典操作”的题目。这些题看似基础实则是后续所有项目的基石。2.2 流程控制程序无非是顺序、分支、循环。if判断和for/while循环是练习题中出现频率最高的知识点也是新手最容易出错的区域。# 一个简单的判断结构 score 85 if score 90: grade 优秀 elif score 60: grade 及格 else: grade 不及格 print(grade)练习题会通过不断变化的条件要求训练你对边界条件的敏感度。比如“判断一个数是否为质数”“统计区间内的偶数个数”这类题目本质上就是逻辑判断加循环的综合训练。2.3 字符串操作Python 的字符串处理能力非常强split、join、replace、find、切片等操作在练习题中占了相当大的比重。# 字符串反转 text Python reversed_text text[::-1] print(reversed_text) # nohtyP字符串练习题往往和生活场景结合紧密比如“统计一句话里的单词数”“判断字符串是否为回文”“去掉字符串中的标点符号并统计词频”。这些练习做熟练之后直接对接的是爬虫数据清洗、文本分析等真实需求。2.4 函数与模块函数是 Python 里最核心的代码组织方式。练习题在前期只会要求你写一段段顺序执行的代码但到了中后期题目会明确要求“编写一个函数完成 XXX 功能”。这时候你不仅要写对逻辑还要学会设计函数参数、返回值理解局部变量和全局变量的区别并尝试把自己写的函数复制到不同场景中复用。2.5 异常处理与文件操作到了练习题的后半段你会遇到需要读文件、写文件、处理用户输入异常的题目。这些题目训练的不只是语法更是工程意识。一个健壮的程序必须能优雅地处理意外情况而不是一崩溃就报红。3. Python 环境搭建与前置准备在开始刷题之前你需要一个能稳定运行 Python 代码的环境。这里不推荐在手机上写代码因为真实工程的代码量、文件管理和调试流程必须靠电脑操作。3.1 安装 Python 解释器第一步是安装 Python 本身。不同操作系统步骤略有差异但思路一致Windows 环境打开 Python 官网下载对应 Windows 版本的安装包。安装时务必勾选“Add Python to PATH”这是新手最容易漏掉的一步。安装完成后同时按下Win R输入cmd打开命令行输入python --version能输出版本号即表示安装成功。macOS 环境macOS 自带 Python 2 的环境但现在不建议使用系统自带的旧版本。推荐通过 Homebrew 安装新的 Python 3。# 安装 Homebrew如果没有 /bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh) # 安装 Python 3 brew install python # 验证安装 python3 --versionLinux 环境大多数 Linux 发行版自带 Python或者可以通过包管理器安装。以 Ubuntu 为例sudo apt update sudo apt install python3 python3-pip python3 --version3.2 选择 IDE 或者编辑器环境搭好之后需要选择一个称手的编辑工具这里分为两派派系一VS Code推荐大多数新手VS Code 免费、跨平台、插件丰富。安装好之后安装 Python 扩展就能获得代码补全、语法检查、单步调试等功能。对初学阶段来说VS Code 足够好用也不需要太重的配置。派系二PyCharm适合想要一体化体验的用户PyCharm 是 JetBrains 出品的专业 Python IDE调试功能非常强大。社区版免费功能基本够用。如果你觉得 VS Code 的配置太繁琐或者你希望 IDE 把所有东西都安排得明明白白可以选择 PyCharm。3.3 创建练习项目目录建议建立一个专门的目录存放所有练习题代码例如python_practice。每道题一个文件命名格式用“序号_题目关键词.py”。python_practice/ ├── 001_hello_world.py ├── 002_variable_type.py ├── 003_if_else_score.py ├── ...这样做的目的是方便检索每一题。可以直观看到自己的练习量。后续复习时能快速定位到薄弱知识点。3.4 验证“三步走”环境写一个最简单的测试脚本test_env.pyprint(Python 环境正常) print(开始练习 Python 330 题)在命令行里运行python test_env.py如果看到两行输出说明环境已经可用可以正式开工了。4. 330 道练习题的核心练习路径拆解接下来是重点。这 330 道题不是让你胡乱做的也不是做一题扔一题它内部有清晰的难度递进逻辑。按照题目知识点的分布我把它拆成七个阶段。4.1 基础语法与输入输出这个阶段大约覆盖 60 道题左右核心目标是熟悉 Python 的基本语法、变量、数据类型、运算符以及最基础的input()和print()交互。典型题目类型输出指定内容例如九九乘法表、星号三角形、菱形图案。接收用户输入进行简单的数学运算如计算圆的面积、温度转换、求两个数的最大公约数。基础类型转换把字符串形式的数字转成整数、浮点数再参与运算。这个阶段容易犯的毛病是“照着敲都敲不对”最常见的是中英文符号混用。Python 对缩进和符号非常敏感如果你写了中文括号或中文引号程序会直接报SyntaxError。这类错误不要慌这是每个 Python 学习者都要经历的过程多错几次才能形成肌肉记忆。4.2 条件判断与分支逻辑这个阶段大约 50 道题左右核心是if / elif / else的灵活运用。练习题会不断抬高条件复杂度从“判断一个数的正负”到“根据用户输入的月份判断季节”“判断一个数是否为闰年”再到“给成绩划分等级但要求考虑边界分数”。这个阶段训练的不仅是语法更是逻辑完整度。很多人写 if 语句时只考虑了正常情况忘了边界条件。比如“判断成绩等级”这道题如果你只写了“大于等于 90 是优秀”那么 85 分的人会掉进哪个分支如果输入了负数又该怎么办练习题在题目描述里可能不会把这些边界全部点出来但运行测试时你会逼着自己去想。这种“自己发现自己不严谨”的过程就是编程思维成长的开始。4.3 循环结构for 与 while这个阶段大约 70 道题是整个 330 道题中题量最大的板块也是最能拉开差距的板块。循环是 Python 基础中最重要的一部分因为真实世界里的数据处理几乎都离不开循环。典型题目类型用for循环完成求和、求阶乘、求最大最小值。用while循环写出猜数字游戏。打印各种图形直角三角、等腰三角、菱形、空心正方形。双重循环打印九九乘法表。穷举算法入门找出水仙花数、完全数、回文数。这阶段的练习会卡住很多人。尤其是双重循环打印图形很多人第一次看到“外层循环控制行内层循环控制列”时会懵很久。这种纠结是正常的建议遇到图形打印题时不要先看答案而是拿纸笔画一个表格把每一行的空格数和星号数都列出来找到规律后再写代码。例如打印如下菱形* *** ***** *** *你先写清每一行的空格数和星号数推导出规律公式再落成代码基本就掌握了双重循环的精髓。4.4 字符串与正则基础这个阶段大约 50 道题重点转向文本处理。字符串切片、拼接、查找、替换、大小写转换都是高频考法。典型题目类型统计字符串中字母、数字、空格、其他字符的个数。判断一个字符串是否为回文。去掉字符串中重复的字符保持原有顺序。模拟用户登录比对用户名和密码。替换字符串中的敏感词。这部分练习的价值在于它让你开始接触“程序处理现实文本”的场景。爬虫得到的网页源码、接口返回的 JSON 数据、用户填写的表单内容本质都是字符串。多做这些题后面学re正则表达式时你才能理解“为什么要有模式匹配这个东西”。4.5 列表、元组、字典与集合这个阶段大约 70 道题是 Python 数据结构的核心也是最接近“真实开发”的部分。列表和字典是 Python 里最常用的两种数据容器几乎所有项目都离不开它们。典型题目类型列表去重、排序、求交集并集差集。统计列表中每个元素出现的次数返回频率最高的元素。把两个列表合并为字典。对字典按照键或值排序。使用列表推导式高效生成数据如[x ** 2 for x in range(10)]。模拟一个简单的通讯录系统能添加、删除、查找联系人。做这部分题目时我强烈建议你多尝试几种写法。比如“列表去重”至少应该有三种方案用set、用循环加判断、用列表推导式。每种方案的执行效率和代码可读性都不一样这种“一题多解”的训练能让你真正理解 Python 的底层数据模型。4.6 函数与代码复用这个阶段大约 50 道题核心是函数封装、参数传递、作用域和递归入门。前面所有练习中你写的都是顺序执行的脚本这里开始要求你改变思路把重复逻辑抽出来写成函数然后用参数控制差异。典型题目类型编写函数计算斐波那契数列的第 n 项分别用循环和递归实现。编写函数判断素数并调用它统计区间内所有素数。编写函数实现最大公约数和最小公倍数。编写默认参数、关键字参数的示例函数。实现简单的计算器支持加、减、乘、除四种操作。函数阶段很多人的痛点是“不知道什么时候该写函数”。判断标准很简单如果你发现自己复制粘贴了同一段代码三次就该把它写成函数了。练习题在这个阶段会不断用题目让你体会这个原则。4.7 面向对象、文件操作与异常捕获这个阶段约 30 到 50 道题是整套练习题的高阶收尾。面向对象类与对象、继承、封装、文件读写open、with语句、CSV 处理、异常捕获try / except都会出现在这里。典型题目类型定义一个学生类包含姓名、成绩等属性并实现打印成绩单的方法。从文本文件中读取多行数据按格式解析并统计结果。写入文件时处理文件不存在的情况。使用with open自动管理文件资源。在除法运算中捕获除零异常并给用户友好提示。到这一阶段你应该可以完成一个非常小的综合项目了比如“学生成绩管理系统”包含输入成绩、排序、保存到文件、从文件读取等完整功能。如果能独立写完说明这套 Python 330 题的核心价值你已经吸收了百分之八十。5. 完整示例与代码实现7 个难度递进的练习题实战这一节我会演示 7 道具有代表性的题目从易到难。每道题都给出题目描述、参考代码、运行效果和关键点解析。这些题目对应着上面七个阶段的核心知识点。5.1 入门级温度转换题目描述用户输入一个带符号的温度值例如30C表示 30 摄氏度86F表示 86 华氏度请转换成另一种单位并输出。参考代码# 文件路径python_practice/001_temperature.py temp_str input(请输入温度例如 30C 或 86F) unit temp_str[-1] value float(temp_str[:-1]) if unit in [C, c]: converted value * 9 / 5 32 print(f{value:.1f}摄氏度 {converted:.1f}华氏度) elif unit in [F, f]: converted (value - 32) * 5 / 9 print(f{value:.1f}华氏度 {converted:.1f}摄氏度) else: print(输入格式不正确请以 C 或 F 结尾)运行验证python 001_temperature.py预期输出请输入温度例如 30C 或 86F30C 30.0摄氏度 86.0华氏度关键解析这道题考察字符串索引、类型转换和分支判断。值得注意的点是temp_str[-1]取最后一个字符作为单位temp_str[:-1]取除最后一个字符外的部分作为数值。很多初学者会直接对30C做int()转换导致报错这就是对切片不熟悉的表现。5.2 条件判断时间转换题目描述输入一个秒数输出它对应的小时、分钟、秒。例如输入 3671 秒输出“1小时1分11秒”。参考代码# 文件路径python_practice/002_convert_seconds.py total_seconds int(input(请输入总秒数)) hours total_seconds // 3600 minutes (total_seconds % 3600) // 60 seconds total_seconds % 60 print(f{total_seconds}秒 {hours}小时{minutes}分{seconds}秒)运行验证python 002_convert_seconds.py预期输出请输入总秒数3671 3671秒 1小时1分11秒关键解析这道题看似简单却是在训练你对整数除法和取模运算的理解。//是整除%是取余。先算小时剩下的秒数再算分钟最后剩下的就是秒。这个“倒推法”在以后做时间处理、单位换算时会被反复使用。5.3 循环猜数字游戏题目描述程序随机生成一个 1 到 100 之间的整数用户输入猜测值程序提示“猜大了”或“猜小了”直到猜中为止。参考代码# 文件路径python_practice/003_guess_number.py import random target random.randint(1, 100) guess_count 0 while True: guess int(input(请输入你猜的数字1-100)) guess_count 1 if guess target: print(猜大了) elif guess target: print(猜小了) else: print(f恭喜你猜对了答案是 {target}你一共猜了 {guess_count} 次。) break运行验证python 003_guess_number.py预期输出请输入你猜的数字1-10050 猜小了 请输入你猜的数字1-10075 猜大了 请输入你猜的数字1-10062 恭喜你猜对了答案是 62你一共猜了 3 次。关键解析这道题的关键是while True和break的组合。还要注意random.randint(1, 100)是闭区间包含 1 和 100。学有余力的话可以加一个“最多猜 7 次”的约束条件因为二分查找的理论上限是 7 次这样顺便接触了算法复杂度思想。5.4 字符串回文判断题目描述判断一个字符串是否为回文忽略大小写和空格。例如A man a plan a canal Panama是回文。参考代码# 文件路径python_practice/004_palindrome.py def is_palindrome(text): # 去除非字母数字字符并统一为小写 cleaned for ch in text: if ch.isalnum(): cleaned ch.lower() return cleaned cleaned[::-1] test_cases [ A man a plan a canal Panama, race a car, hello, ] for case in test_cases: print(f{case!r} - {is_palindrome(case)})运行验证python 004_palindrome.py预期输出A man a plan a canal Panama - True race a car - False hello - False关键解析这道题综合了字符串遍历、isalnum()过滤非字母数字字符、lower()统一大小写、切片反转等多个知识点。cleaned cleaned[::-1]是整个解法中最巧妙的一步用切片反转字符串来比较。如果不用切片你需要写一个循环从尾到头构造新字符串两行代码和一个循环的差距体现的是对 Python 内置能力的熟悉程度。5.5 容器统计最高频词汇题目描述给定一句英文文本统计每个单词出现的次数输出出现次数最多的 3 个单词。参考代码# 文件路径python_practice/005_word_frequency.py text Python is powerful and fast Python is easy to learn Python is open source words text.lower().split() word_count {} for word in words: word_count[word] word_count.get(word, 0) 1 # 按出现次数降序排序取出前 3 top_words sorted(word_count.items(), keylambda item: item[1], reverseTrue)[:3] for word, count in top_words: print(f{word}: {count} 次)运行验证python 005_word_frequency.py预期输出python: 3 次 is: 3 次 and: 1 次关键解析这道题涉及字典的经典操作dict.get(key, default)。word_count.get(word, 0) 1的意思是如果单词已经在字典中取它的旧值加 1如果不在从 0 加 1。这是统计频率最优雅的写法。排序部分用到了sorted函数配合lambda表达式这里可能让新手有一点压力但这是 Python 里使用频率极高的写法值得花时间弄懂keylambda item: item[1]意思是“按每个元素的第二个字段即次数作为排序依据”reverseTrue表示降序。5.6 函数斐波那契数列题目描述编写一个函数输入 n返回斐波那契数列的第 n 项。斐波那契数列定义为第 0 项为 0第 1 项为 1从第 2 项开始每一项等于前两项之和。参考代码# 文件路径python_practice/006_fibonacci.py def fibonacci_recursive(n): 递归实现代码简洁但 n 较大时效率低 if n 1: return n return fibonacci_recursive(n - 1) fibonacci_recursive(n - 2) def fibonacci_iterative(n): 循环实现效率高推荐 if n 1: return n a, b 0, 1 for _ in range(2, n 1): a, b b, a b return b for i in range(10): print(ffib({i}) {fibonacci_iterative(i)})运行验证python 006_fibonacci.py预期输出fib(0) 0 fib(1) 1 fib(2) 1 fib(3) 2 fib(4) 3 fib(5) 5 fib(6) 8 fib(7) 13 fib(8) 21 fib(9) 34关键解析斐波那契数列是递归入门的经典题。但这里我更推荐你用循环版本因为递归版本在面对 n 40 以上时会出现指数级的重复计算速度会非常慢。循环版本里a, b b, a b这种同时赋值的写法非常 Pythonic实现了不用临时变量就能交换值的效果。理解这个写法后面的算法题会轻松很多。5.7 综合实战学生成绩管理题目描述设计一个学生成绩管理系统支持添加学生、查看所有学生、计算平均分、将数据保存到文件、从文件加载数据。参考代码# 文件路径python_practice/007_student_system.py import json import os DATA_FILE students.json def load_students(): 从文件加载学生数据 if not os.path.exists(DATA_FILE): return [] with open(DATA_FILE, r, encodingutf-8) as f: return json.load(f) def save_students(students): 保存学生数据到文件 with open(DATA_FILE, w, encodingutf-8) as f: json.dump(students, f, ensure_asciiFalse, indent2) def add_student(students, name, score): 添加学生 students.append({name: name, score: float(score)}) save_students(students) def show_students(students): 显示所有学生 if not students: print(暂无学生数据) return for student in students: print(f姓名: {student[name]}, 成绩: {student[score]}) def average_score(students): 计算平均分 if not students: return 0 total sum(student[score] for student in students) return total / len(students) def main(): students load_students() while True: print(\n请选择操作1.添加学生 2.查看学生 3.计算平均分 4.退出) choice input(请输入序号) if choice 1: name input(请输入学生姓名) score input(请输入学生成绩) try: add_student(students, name, score) print(添加成功) except ValueError: print(成绩必须是数字) elif choice 2: show_students(students) elif choice 3: print(f平均分{average_score(students):.2f}) elif choice 4: print(已退出系统) break else: print(无效操作) if __name__ __main__: main()运行验证python 007_student_system.py交互示例请选择操作1.添加学生 2.查看学生 3.计算平均分 4.退出 请输入序号1 请输入学生姓名小明 请输入学生成绩90 添加成功 请选择操作1.添加学生 2.查看学生 3.计算平均分 4.退出 请输入序号2 姓名: 小明, 成绩: 90.0 请选择操作1.添加学生 2.查看学生 3.计算平均分 4.退出 请输入序号3 平均分90.00关键解析这道题是整套练习题的一个浓缩。它把函数设计、文件读写、异常捕获、数据结构和 while 交互组合在一起已经具备了一个微型项目的雏形。容易踩坑的地方有两点。第一文件编码。在 Windows 上读中文文件时如果不指定encodingutf-8很容易出现乱码或UnicodeDecodeError。第二成绩输入的非数字异常。这里用try / except把float(score)包起来让程序在遇到非法输入时不会崩溃。如果你想进阶可以继续给它加功能按成绩排序、删除学生、支持修改成绩甚至用csv模块换成 CSV 格式存储方便用 Excel 打开。6. 七天刷题计划这样安排最高效光有练习题还不够你还需要一个执行计划。330 道题如果按一周练完平均每天要完成 47 道左右。这个强度对完全零基础的人偏大对每天能投入 3 到 4 小时的人是可以实现的。这里给出一份更务实的一周安排可根据自己的时间灵活调整第 1 天环境搭建 基础语法题60 题上午安装好 Python 和 VS Code下午开始做输入输出、变量、数据类型相关题目。这一天的目标是熟悉代码编辑器的使用知道运行按钮在哪里知道报错长什么样。不必追求一次全对重点是“跑起来”。第 2 天条件判断与分支逻辑50 题这一天集中练习if / elif / else。做题时建议先在纸上写出判断逻辑再写代码。多关注边界条件比如数值为 0、负数、字符串为空等情况。第 3 天循环专项70 题循环是基础中的重头戏。上午练for循环的求和、遍历、嵌套下午练while循环和题目中常见的标志位写法。图形打印题如果卡住超过 20 分钟建议直接看答案看懂后再默写一遍而不是死磕到底。第 4 天字符串专项50 题字符串操作题主要靠积累。建议把所有内置字符串方法过一遍比如split、join、strip、replace、find、count、startswith、endswith。做题时多想一步“这个方法会不会改变原字符串”。字符串是不可变对象几乎所有的操作都会返回新字符串。第 5 天列表、元组、字典与集合70 题数据结构题要重点练习。建议画出内存示意图帮助理解列表是一个有顺序的容器字典是键值对映射元组是不可变列表集合是一个去重。做题时多尝试用推导式和内置方法简化代码一个三行的列表推导式往往比五行的 for 循环更受面试官欢迎。第 6 天函数专项30 题开始函数练习后要求自己每题必须定义一个函数不能只写脚本。别嫌麻烦这是从“写脚本的小白”过渡到“写程序的人”的关键转变。学习默认参数、关键字参数、返回值尝试写递归。第 7 天综合复习与文件处理剩余题目把前六天做过的错题重新做一遍然后完成面向对象、文件读写和异常处理的题目。如果时间充裕把第 5 节的“学生成绩管理系统”独立写完。这份计划不需要严格执行到每天数量均等。核心原则是每天都要写代码每天都要有代码能跑出正确结果。坚持七天你会看到非常显著的进步。7. 常见问题与排查思路刷题过程中你一定会遇到各种报错。这里整理一份高频问题的排查表建议直接收藏。问题现象可能原因排查方式解决方案SyntaxError: invalid syntax中英文符号混用例如中文括号、中文引号检查报错行高亮位置删除中文符号切换为英文半角输入IndentationError: expected an indented block代码块没有正确缩进查看报错位置下方逻辑块是否整齐统一使用 4 个空格缩进不混用 Tab 和空格NameError: name xxx is not defined变量名拼写错误或未定义就先使用查看报错位置前的变量名核对变量拼写确认变量定义在调用之前TypeError: can only concatenate str (not int) to str字符串和整数直接用拼接检查拼接处两侧的数据类型使用str()转换或用 f-string 格式化IndexError: list index out of range列表索引超出范围打印列表长度对比索引值检查索引是否从 0 开始使用切片时控制边界KeyError: xxx字典中不存在该键打印字典确认键名使用dict.get(key)代替dict[key]FileNotFoundError文件路径错误或文件不存在打印当前工作目录确认文件位置使用绝对路径或先创建文件UnicodeDecodeError读写中文文件时编码不匹配查看文件打开方式统一指定encodingutf-8AttributeError: NoneType object has no attribute xxx调用的结果可能是 None再往下调方法打印中间结果确认先判空或查看前端调用链代码能运行但结果不理想逻辑偏差例如边界条件没处理好用 print 打印中间变量追踪拆开逻辑逐步验证补充边界测试一个建议遇到报错时先读最后一行。Python 的报错信息虽然长但真正有用的通常是最后一句“错误类型错误描述”。错误类型可以帮助你快速判断问题方向剩下的就是反复调试。8. 最佳实践与工程建议题目做完之后会更接近真实开发。这里有几条建议能帮你把练习的质量再提高一个档次。第一先思考再写代码。拿到题目后不要在 10 秒内就动手。先花一两分钟想清楚输入是什么输出是什么中间要经历哪几步。如果题目复杂先把核心逻辑写在纸上再翻译成 Python 代码。这种习惯能直接降低你的写题错误率。第二一题多解。同一个问题至少想出两种解法。比如求最大值可以手写循环可以直接用max()可以先用sorted()再取末尾元素。对比不同方法的时间复杂度体会 Pythonic 写法的优势。第三写注释和文档字符串。函数题要求在函数开头写三引号注释说明函数功能、参数含义和返回值。这个习惯会让你的代码可维护性大幅提升。第四建立错题本。每做错一题就把错误代码和正确代码放在同一个 Markdown 文件里旁边写上犯错原因。周末复习错题本比做新题更重要。第五不要复制粘贴。第一遍做的时候就算是看答案也建议手敲一遍代码。代码能力和阅读能力是两回事你的手会记住 Python 的语法节奏。第六提前接触调试工具。VS Code 里的断点调试功能非常强大。当你的程序运行结果不符合预期时不是加一堆print而是打断点逐行观察变量变化。这个习惯会在以后写大型项目时让你事半功倍。第七注意安全与边界。如果练习题涉及文件操作不要直接对着系统关键目录做写操作练习数据库删除操作时务必在测试库中验证提前备份。工程意识从第一行代码就可以开始养成。9. 总结与后续学习方向一周练完 330 道 Python 练习题之后你会达到一个什么水平做一个比较实在的判断你会具备独立编写 100 行以内小型脚本的能力能够读懂大部分 Python 开源项目的基础代码具备较强的语法熟练度对“程序是怎么跑起来”的这件事有了直接体感。你还不算工程师但你已经是一个合格的 Python 基础学习者了。做完练习题后的下一步有三个方向建议方向一深入学习一个方向。如果你对网页数据感兴趣学习requests加BeautifulSoup写爬虫如果你是做数据处理学习pandas和numpy如果你对自动化办公感兴趣学习openpyxl操作 Excel。基础语法已经不能束缚你你要开始围绕真实需求学习第三方库。方向二完成一个小项目。把 330 题中涉及的知识点整合起来做一个完整的项目比如命令行版本的待办事项管理器、个人记账本、天气查询小工具。项目不需要大但必须完整有输入、有处理、有存储、有异常处理。方向三系统性学习算法和数据结构。当你发现 330 道题已经不足以满足挑战时可以开始接触 LeetCode 的简单题。先用 Python 解决常见的排序、查找、双指针、哈希表问题。这时的你已经有了足够的基础去理解“算法”这两个字背后的东西。最后还是那句话编程不是看会的是练会的。这套 330 道 Python 练习题就是给你提供了一条最短、最清晰的练习路径。每天一练七天之后你会感谢现在坚持的自己。