尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Python基础语法练不透?100道练习题从环境搭建到代码实战全拆解

Python基础语法练不透?100道练习题从环境搭建到代码实战全拆解 Python 100 道练习题这套东西尤其在刚学完基础语法、想动手又不知道从哪开始的阶段流传度和实用性都不低。我见过不少人在学完变量、列表、字典之后特别迷茫语法看得懂一到自己写就卡住。这种时候刷一套有梯度、覆盖常见知识点的练习题往往比再看一遍教程更管用。这套题的准确价值不是让你一周变成什么大神而是帮你把“看懂”变成“能写”。下面我会按实际练题顺序拆一遍结合安装环境、题型分类、每天节奏和避坑经验尽量让第一次刷题的人少走弯路。1. 这套 100 道练习题真正练的是什么东西1.1 它适合谁不适合谁先说适合的人群。第一种是刚把 Python 基础语法学完的人比如知道列表、字典、for 循环、函数的定义但从来没有独立写过十行以上的代码。第二种是想准备一些基础笔试或面试的人很多岗位的 Python 笔试题难度并不会超出这类练习的覆盖范围。第三种是转行或作为第二技能学习的人需要通过大量小题目来形成“代码手感”。不太适合的人群也很明确。如果连变量、数据类型、if 和 for 都没搞明白就上来刷 100 道题大概率会卡在前 20 道然后产生一种“自己不适合编程”的错觉。不是题目有问题而是前置语法没有补齐。另外一种情况是已经在做真实项目、每天接触大量业务代码的人这时候刷这种基础题效率偏低不如去啃项目、源码和更贴近业务的训练。所以判断要不要刷这套题核心就看一条你目前能不能独立写一个判断闰年或者统计字符串里字母出现次数的脚本。如果写不出来这套题非常值得刷如果能轻松写出来就跳过前面基础部分直接去刷更综合的题目。1.2 “一周练完”不能理解成“一周成大神”标题里“一周练完”“必成大神”这两个说法老实讲非常夸张。但这里有一个更容易被忽略的事实如果把 100 道题按难度排好前面 30 道确实能在几分钟内完成一道后面 30 道综合题可能需要 20 分钟甚至更久。一周内全部过一遍在时间上是有可能的尤其对于已经学过语法、只差练习的人。问题在于“过一遍”和“掌握”是两回事。题目做完了不意味着以后遇到同类问题能立刻想到解法尤其是不复盘、不重写、只照着参考答案抄的情况下。我更愿意把这套题的目标定为把基础语法形成肌肉记忆。比如看到一个需求能顺手写出循环、字典统计、字符串处理不用每次都要翻笔记。达到这个程度这套题的价值就已经兑现了。所以别被“必成大神”四个字压着拿它当一个训练计划而不是一个承诺。练完之后能不能写爬虫、写 Web、写自动化脚本那是后面的发展方向后面我会单独说。2. 练习之前先把运行环境收拾干净2.1 安装 Python 和检查版本刷题之前第一件事不是打开题目而是确认本地 Python 环境可用。直接打开命令行输入python --version如果显示 Python 3.x比如 Python 3.10、3.11、3.12就可以直接开始。如果显示python 不是内部或外部命令说明安装时没有把 Python 加入系统环境变量。Windows 用户在安装程序的第一步记得勾选Add Python to PATH再继续安装。macOS 用户注意一点系统自带的python3和 Windows 上常见的python命令不完全一样。Linux 下也可能同时存在python3和python两个命令。如果python --version不好用就试python3 --version。注意不要为了赶进度跳过环境验证。很多初学者刷题报错不是代码问题而是 Python 没装好、解释器选错、或者终端还没重启导致命令不生效。环境问题不处理干净后面每一道题都会受影响。版本方面新手直接使用 Python 3 就好。网上有些老教程还停留在 Python 2 的写法比如print hello这种没有括号的形式在 Python 3 里全部会报语法错误。刷题时看到旧语法优先改成 Python 3 的写法。2.2 编辑器选 VS Code而不是记事本或在线运行器做练习题时很多人贪方便直接在网页在线编辑器上打代码。临时看一两个语法还行但我不建议把整个刷题过程放在上面。原因有三个第一在线编辑器无法保留你的代码历史做完就没了不利于复盘。第二真实工作中几乎都是在本地编辑器里开发和调试越早适应本地工作流越好。第三本地 VS Code 的调试、代码补全、错误提示对新手很友好能让你更快看懂报错。安装 VS Code 之后还需要装一个 Python 扩展。打开扩展商店搜索“Python”安装微软官方发布的那一个。然后打开任意.py文件按CtrlShiftPmacOS 是CmdShiftP输入Python: Select Interpreter选择你刚安装的 Python 解释器。这一步非常重要不然你写代码时有红色波浪线提示运行也可能选错环境。2.3 用最小样例验证环境可用环境配好之后先不急着做题。新建一个test.pyprint(hello python) s 100 print(int(s) 1)用 VS Code 的右上角三角形运行按钮或者命令行执行python test.py。如果看到输出hello python和101说明编辑器、解释器、命令行都通了。我在一开始会先跑这种一两分钟的小测试不做题目的就是把环境问题排除掉。后面题目出问题时你才能专心看代码逻辑而不是一边看报错一边怀疑是不是环境没装好。这种“先跑最小样例”的习惯不止是刷题要用以后做任何新项目、接任何新代码库都应该先这样做。3. 100 道题不能闷头刷先按能力阶段拆成四块3.1 前 25 题语法和输入输出多数 100 题合集的前面部分属于热身题。考点集中在print()输出格式input()从控制台读入数据变量赋值和类型转换加减乘除、取余、幂等基础运算简单的字符串格式化比如 f-string 或format()这个阶段的题目难度很低但有一个最容易忽略的训练目标读题。比如题目说“输入一个整数 n”你需要先想到int(input())而不是直接input()。很多新手的错误不是不会写代码而是没有注意到input()返回的是字符串。我在这个阶段会要求自己不看参考答案哪怕题目很简单也要独立写一遍。因为热身题的目的就是建立“读题 - 对应知识点 - 写代码 - 运行验证”的完整链路。如果热身阶段就急着看答案后面的综合题会更痛苦。3.2 25 到 50 题流程控制和逻辑分支从这里开始题目开始出现真正的逻辑。常见类型判断奇偶数、闰年、成绩等级输出三角形、菱形、九九乘法表用循环求和、求平均值、找最值猜数字游戏简单枚举比如百钱百鸡、水仙花数这一阶段的核心是if/elif/else、for、while、break、continue的组合使用。你会发现有些题用for能写用while也能写但代码长短和可读性差别很大。练习时不只要写出来还要想一想循环边界怎么定退出条件是什么会不会有死循环3.3 50 到 75 题函数、字符串和数据结构到了这个阶段题目就开始接近真实开发中的基础操作了。比如字符串反转、截取、替换、分隔、拼接判断回文、统计字符出现次数列表去重、排序、反转、合并字典的增删改查、按键或值排序元组和集合的基本使用用函数封装一段逻辑比如判断素数、求阶乘、求最大公约数这个阶段是很多人刷题的分水岭。前 50 道题基本是在单学一个知识点后面则要求你同时使用多个知识点。比如“把一段英文按单词拆分再统计每个单词出现的次数按次数从高到低排序”就需要字符串、列表、字典、排序全部连贯起来。我见过很多同学卡在这个阶段不是因为某个函数不会而是没有一个总体的解题思路。这时可以试着先用中文把步骤写出来再翻译成代码。先拆步骤再写代码能解决大部分“不知道从哪下手”的问题。3.4 75 到 100 题文件、算法和综合应用最后这个阶段会涉及更多的算法概念和工程习惯。常见的题型包括素数的几种判断方法比如暴力法和sqrt优化排序和查找比如冒泡排序、选择排序、二分查找递归比如阶乘、斐波那契数列、汉诺塔文件读取、写入处理简单文本正则表达式或者字符串匹配生成随机数并设计小游戏到了这一阶段就可以顺手练习代码质量了。变量名是否清晰有没有把重复代码提取成函数能不能处理一些异常输入比如用户输入了负数或空字符串。练习题本身不会严格要求这些但养成习惯之后写真实项目会顺利得多。可以参考下面这个分类思路阶段大致题号核心知识点主要目标第一阶段1-25输入输出、变量、运算建立最小闭环第二阶段26-50条件、循环、嵌套形成逻辑思维第三阶段51-75函数、字符串、列表、字典组合使用知识第四阶段76-100文件、排序、递归、综合提升代码质量这套阶段划分不一定和网上每一份“100 题”完全一致但思路是通用的。拿到任何练习题先扫一眼难度按知识点分类不要按顺序闷头硬刷。4. 每天一练的落地节奏4.1 一周七天的主题分配如果真想按“一周练完”的计划走我不建议平均每天刷 15 道。更稳的做法是按主题分组前三天集中基础后三天加大强度最后一天复盘。我常用的节奏是天数练习重点建议题量第 1 天输入输出、变量、类型转换10-15 道第 2 天条件判断和逻辑分支10-15 道第 3 天for 循环、while 循环、嵌套循环12-15 道第 4 天函数定义和参数传递10-12 道第 5 天字符串、列表、字典、集合15-20 道第 6 天文件读写、排序、递归、综合题10-15 道第 7 天错题重做、综合小项目数量不限这个表里的题量加起来会超过 100 道因为很多题目跨多个知识点一天内经常能连续做掉好几道。而且第 7 天不追求新题量重点是复盘。4.2 每道题的标准处理流程刷题最怕只看答案然后觉得自己会了。我给初学者一个标准流程每道题都走一遍读题。把题目里的输入格式、输出要求、边界条件划出来。自己在纸上或注释里写思路先用自然语言描述。动手写代码。不要一边写一边看答案。运行测试正常情况和边界情况。如果卡住超过 20 分钟再看参考答案看明白后关掉答案重写一遍。这个流程看起来很麻烦但前期多花时间后面综合题反而更快。因为你已经习惯了“先想清楚再写代码”而不是“瞎试”。4.3 时间不够时怎么办如果白天要上班、上课每天只有一小时左右我的建议是不要强迫自己“一周刷完”。每天完成 3 到 5 道题一个月内把 100 道题过一次效果可能比一周硬刷更好。练习编程最重要的不是速度而是每一次练习都真的动了脑。有一种情况除外你对基础语法已经比较熟刷题只是找手感。这种情况确实可以一天 20 道往后推进看题后先在脑子里想实现思路再快速写出来验证。注意时间紧张时优先保证“完整完成一道题”而不是“看了二十道题”。半途而废的题没有任何训练价值甚至会产生一种虚假的勤奋感。5. 十道高频题型拆解题目长什么样考点在哪下面挑十类非常常见的题目类型不把整套 100 题列完而是拆一下考点和思路。你会发现很多题看似不同底层逻辑其实是同一个。5.1 奇偶数判断输入一个整数判断它是奇数还是偶数。考点是input()返回字符串需要先int()转换取模运算符%的用法。n int(input(请输入一个整数: )) if n % 2 0: print(偶数) else: print(奇数)这道题的热身价值在于类型转换放在哪里、判断条件是而不是。很多初学者在if里写一个这是赋值而不是比较会直接报语法错误。5.2 九九乘法表输出 1 到 9 的九九乘法表。考点是嵌套循环和输出控制。外层循环控制行内层循环控制列end或end\t控制不换行。for i in range(1, 10): for j in range(1, i 1): print(f{j}*{i}{i*j}, end\t) print()这里容易出错的是内层循环的范围。写成range(1, 10)也能跑但输出的就不是左下三角而是整个矩形。多体会一下i 1为什么要这样写。5.3 斐波那契数列输出前 n 项斐波那契数列。考点是序列赋值a, b b, a b以及循环边界的控制。n int(input(请输入项数: )) a, b 0, 1 for _ in range(n): print(a, end ) a, b b, a b有些版本会从第一项开始输出这取决于题目要求。做这道题时不要死记代码要理解为什么赋值语句可以同时更新两个变量。5.4 字符串反转和回文判断输入一个字符串判断它是不是回文。考点是字符串切片。s[::-1]能直接得到反转字符串代码很简洁。但面试或考试时也可能会要求你手动用循环实现反转。s input(请输入字符串: ) if s s[::-1]: print(是回文) else: print(不是回文)这种题还可以扩展忽略空格和大小写再判断或者用while从两端往中间比较。一次练习可以写多个版本。5.5 列表去重和排序给一个列表去掉重复元素并排序。考点是set()、sorted()、list.sort()的区别。set()能去重但不保证顺序sorted()返回新列表list.sort()原地排序。nums [3, 1, 2, 3, 4, 1, 5] unique_nums sorted(set(nums)) print(unique_nums)这里要能回答一个问题如果要求保持原顺序去重怎么做那你需要遍历列表并用not in判断或借助一个集合记录出现过的元素。这种追问就是练习题到面试题的常见跨越方式。5.6 字典统计词频统计字符串里每个字符出现的次数。考点是字典的get方法或者collections.Counter。基础写法是s hello world count {} for ch in s: count[ch] count.get(ch, 0) 1 print(count)如果要求“按次数从高到低排序”再叠加排序操作。sorted_count sorted(count.items(), keylambda x: x[1], reverseTrue) print(sorted_count)这个阶段接触的 lambda 可能有点超前但能理解它代表“按每个键值对的第二个元素排序”就够了。5.7 素数判断输入一个正整数判断它是不是素数。先写暴力版从 2 循环到 n-1看能否整除。再优化成只循环到int(n ** 0.5)加 1。考点是循环边界、break、for...else。n int(input(请输入一个正整数: )) if n 2: print(不是素数) else: is_prime True for i in range(2, int(n ** 0.5) 1): if n % i 0: is_prime False break print(是素数 if is_prime else 不是素数)这道题属于很经典的“把逻辑想清楚再写”的题目。边界条件n 2经常被漏掉考的就是细心程度。5.8 冒泡排序实现一个列表的冒泡排序。考点是双重循环、交换变量、以及每轮可以少比较一个元素。def bubble_sort(arr): n len(arr) for i in range(n - 1): for j in range(n - 1 - i): if arr[j] arr[j 1]: arr[j], arr[j 1] arr[j 1], arr[j] return arr平时写业务代码直接调sorted()就行。但作为练习手写一次排序能让你真正理解“比较和交换”是怎么回事。这也是很多笔试的常规题。5.9 文件读取和词频统计读取一个文本文件统计每个单词出现的次数。考点是open()的上下文管理器、读取字符串、拆分、清洗标点、字典统计。这道题把前面好多知识点都串起来了。with open(test.txt, r, encodingutf-8) as f: text f.read() words text.split() word_count {} for word in words: word word.strip(.,!?;:\) word_count[word] word_count.get(word, 0) 1 print(word_count)在练习题阶段文件路径很容易出问题。遇到FileNotFoundError先确认文件是不是在当前工作目录下或者把路径写成绝对路径试试。5.10 猜数字小游戏程序生成一个 1 到 100 的随机数用户输入数字程序提示大了或小了猜中后退出。考点是random、while True、break、异常处理。这是一个几乎所有 Python 初学者都写过的综合练习。import random target random.randint(1, 100) while True: try: guess int(input(请输入你猜的数字: )) except ValueError: print(请输入整数) continue if guess target: print(大了) elif guess target: print(小了) else: print(猜中了) break做这种综合题时可以给自己加需求比如统计猜的次数、最多允许猜 10 次、超出范围提示。加的每一次需求都是在训练需求拆解能力。6. 刷题过程中最常见的五个坑6.1 环境没配好就开刷这个问题在前面已经反复强调但在真实刷题里出现频率依然最高。现象是明明代码和答案一模一样运行却一直报错。排查顺序应该是先看命令行能不能执行python --version再看 VS Code 有没有选对解释器最后再看代码。很多报错根本和代码逻辑无关。比如ModuleNotFoundError: No module named requests这是没安装第三方库。你用pip install requests装一遍就好。练习题阶段一般用不到第三方库但以后跑爬虫、数据分析时一定会遇到。6.2 只抄代码不自己写看到题目先翻答案甚至边看边敲这是最浪费时间的一种刷题方式。现象是题目都做完了但合上答案一道题都写不出来。破解方法就是我前面提的“卡 20 分钟再看答案”和“看完答案后关掉重写一遍”。只记忆代码片段没有用在真实场景里没人会告诉你这套代码对应哪个题目你必须自己识别问题并组织代码。6.3 不读题急着写有些题目输入输出格式写得很明确但新手容易只看前半句就开始写结果输出多了一个提示语或数据类型和题目要求不一致。比如题目说“输出每个数占一行”你结果用空格分隔题目说“输入可能包含多行”你只处理了第一行。写代码前把题目复制到一个注释里然后拆出三件事输入是什么、处理逻辑是什么、输出是什么。这三件事没拆清楚之前不要动手写。6.4 一道题卡太久心态崩练习过程中卡题很正常。如果一道题卡了 30 分钟还是毫无头绪不是说明你笨而是这道题背后的知识点可能超出当前阶段。这时候可以看参考答案也可以先跳到后面更简单的题回头再补。我比较反对死磕超过一小时。刷题是训练不是竞赛。保持进度和手感比单题死磕更重要。但“卡了就看答案”不意味着“每次都看答案”标准前面已经说过看完答案后一定要能合上答案重写出来。6.5 只看“能跑”不看代码质量练习题只要能跑就算通过这个标准在入门阶段可以接受。但随着题目变难你要开始关注变量命名、重复代码、异常处理。比如下面两段代码功能一样a input() b int(a) if b % 2 0: print(even) else: print(odd)num int(input(请输入一个整数: )) if num % 2 0: print(偶数) else: print(奇数)第二段至少做了两件事用有意义的变量名num把类型转换合并到了输入处。练习过程中不要求一步到位但刷到后面要有意识地回头优化前面写过的代码。7. 练完之后往哪个方向走7.1 爬虫方向100 道题练完之后很多人第一个想到的是爬虫。爬虫确实能综合练习requests、正则、文件读写和数据处理但要注意合规边界。只学习和处理公开信息、遵守目标网站的规则是没问题的。不要写过度的采集程序也不要在没有授权的情况下抓取用户隐私数据。入门可以先写最简单的静态页面请求import requests resp requests.get(https://example.com) print(resp.status_code)跑通之后再学BeautifulSoup或parsel解析 HTML然后把结果保存成文件。这个过程中遇到的所有问题本质上都是练习题阶段已经练过的基础能力比如字符串清洗、列表遍历、字典统计。7.2 数据处理和分析方向数据处理是 Python 应用里非常热门的方向。练习题阶段你练过的列表、字典、循环在数据分析里会换成 DataFrame 和 Series但核心还是“清洗数据、统计、排序、查找、分组”。常用的库包括pandas、numpy、matplotlib。先装库再找一份公开的 Excel 或 CSV 数据练习读取、筛选、统计、画图。这一步需要学习新库的 API但解决问题的逻辑还是刷题时练出来的那套逻辑。7.3 自动化脚本方向日常工作里有很多重复操作可以用 Python 自动化。比如批量重命名文件、整理下载目录、批量处理 Excel、定时发送报表。练习题中“文件读取和写入”在这里变成真实项目。一个常见的自动化思路是先用os.listdir()或pathlib找文件再过滤出目标文件最后用os.rename()或shutil.move()处理文件。你可以从最简单的一键重命名开始逐步加入配置、日志、异常处理。7.4 Web 开发和 AI 编程方向如果对 Web 开发感兴趣可以学Flask或FastAPI把练习题里的函数封装成网页接口。以前你在终端里输入数字以后用户在浏览器里输入数字后端用 Python 处理再返回结果。这个转变会让学生第一次理解“代码和用户之间发生了什么”。如果对 AI 编程或大模型应用感兴趣可以学习调用模型 API 或者用开源模型做本地实验。现在有不少 AI 编程工具可以帮助生成代码但我建议不要因为有了工具就跳过了基础练习。AI 生成的代码你也得能看懂、能调试、能判断对不对。基础不牢工具越强越容易把错误代码直接放进项目里。7.5 把练习代码整理成自己的工具库最后一个小建议不要把 100 道题的代码丢在文件夹里吃灰而是整理成一个项目。按照功能分文件比如basic_exercises.py、algorithm_exercises.py、file_exercises.py。每一个函数写上 docstring说明输入和输出。整理代码你会自然地注意到一些问题函数命名是否统一参数是否有默认值重复代码是否太多。如果愿意再用 Git 管理起来记录每次修改。这个动作本身就是从“刷题”走向“做项目”的第一步。开头那句话我从头到尾都没有改这套题不会让你一周成大神但一定能让你的手跟上脑子。把环境弄干净把题按阶段拆开每天稳定练一点遇到卡住的地方先排环境、再排输入格式、再排代码逻辑刷完之后把这些代码变成自己的工具库。这条路走完你再去看任何 Python 项目至少不会觉得陌生。
返回列表