☰
Python基础语法练不透?100道练习题从环境搭建到代码实战全拆解
2026/10/30 15:37:44 网站建设 项目流程

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文件,按Ctrl+Shift+P(macOS 是Cmd+Shift+P),输入Python: Select Interpreter,选择你刚安装的 Python 解释器。这一步非常重要,不然你写代码时有红色波浪线提示,运行也可能选错环境。

2.3 用最小样例验证环境可用

环境配好之后,先不急着做题。新建一个test.py:

print("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 每道题的标准处理流程

刷题最怕只看答案,然后觉得自己会了。我给初学者一个标准流程,每道题都走一遍:

  1. 读题。把题目里的输入格式、输出要求、边界条件划出来。
  2. 自己在纸上或注释里写思路,先用自然语言描述。
  3. 动手写代码。不要一边写一边看答案。
  4. 运行,测试正常情况和边界情况。
  5. 如果卡住超过 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(), key=lambda x: x[1], reverse=True) 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", encoding="utf-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 项目,至少不会觉得陌生。

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

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

立即咨询