这一篇算是第三阶段的阶段性收尾。前面你已经学了判断、循环、嵌套判断、循环嵌套、流程思维,现在该做的,不是再单独看某一个语法点,而是把它们真正连起来用。
写到这里,很多人会进入一个特别关键的阶段。
前面的知识点,你基本都见过了:
ifelifelsewhileforrange()循环嵌套breakcontinue
单独看每一个,好像都不算特别难。 可真到了自己写程序时,很多人还是会卡住。
原因其实很简单。
你不是不会某个语法。 你只是还没有把这些语法真正“连起来”用过。
就像你学会了很多单词, 但还没真正说过几段完整的话。 你学会了很多零件, 但还没真正把它们组装成一个能跑的小程序。
所以这一篇,我们就不再单独讲新的语法了。 我们专门做一件事:
把前面这一阶段的流程控制知识,真正用起来。
你会看到,判断和循环一旦组合起来, 程序就开始变得更像样了。
一、这一阶段你到底学会了什么
先别急着做题, 先回头看一眼你手里已经有什么工具。
你已经会顺序执行代码。 也就是程序一步一步往下走。
你已经会条件判断。 也就是根据真假结果,让程序选择不同路线。
你已经会循环。 也就是让程序重复执行某段逻辑。
你已经会嵌套。 也就是在判断里面继续判断,在循环里面继续循环。
你也开始接触流程思维。 知道拿到题目以后,不是先急着写代码, 而是先拆步骤、先想逻辑。
说白了,到这一篇为止,你已经不再只是学“语法点”了。 你已经有能力开始写一些真正的小程序了。
二、做综合练习时,先记住一个最重要的顺序
以后你碰到稍微复杂一点的题目, 都尽量按这个顺序来:
先看题目要干什么 再拆步骤 再判断里面有没有分支 再判断里面有没有重复 最后再选语法去翻译
不要反过来。
不要一上来就想:
这里是不是要用 while 那里是不是要用 if 这题是不是得上嵌套
这样特别容易乱。
你现在最稳的路线仍然是:
题目 步骤 结构 代码
只要顺序不乱,你的程序就会稳很多。
三、综合练习 1:判断一个数字是正数、负数还是零
这题看起来简单,但特别适合练多分支判断。
题目:
输入一个数字,判断它是正数、负数还是 0。
先拆流程:
第一步,输入一个数字 第二步,判断它是否大于 0 第三步,如果是,输出正数 第四步,否则判断它是否小于 0 第五步,如果是,输出负数 第六步,否则输出它是 0
代码如下:
num = float(input('请输入一个数字:'))if num > 0: print('这是一个正数')elif num < 0: print('这是一个负数')else: print('这是 0')
这题虽然不复杂, 但很适合你体会:
一个题目并不是“套语法”, 而是先看它有几个分支,再决定用什么结构。
四、综合练习 2:输入年龄,判断人生阶段
这题你前面零碎练过, 但现在我们用“完整题目”的方式再做一遍。
题目:
输入年龄,判断是儿童、青少年、成年人还是老年人。
先拆流程:
第一步,输入年龄 第二步,判断是否大于等于 60 第三步,如果是,输出老年人 第四步,否则判断是否大于等于 18 第五步,如果是,输出成年人 第六步,否则判断是否大于等于 12 第七步,如果是,输出青少年 第八步,否则输出儿童
代码如下:
age = int(input('请输入年龄:'))if age >= 60: print('你属于老年人阶段')elif age >= 18: print('你属于成年人阶段')elif age >= 12: print('你属于青少年阶段')else: print('你属于儿童阶段')
这个例子特别适合再提醒你一个点:
多分支判断里,条件顺序非常重要。 范围更高、要求更严格的条件,要优先放前面。
五、综合练习 3:连续输入密码,直到正确为止
现在开始把判断和循环真正结合起来。
题目:
不断让用户输入密码,直到输入正确为止。
先拆流程:
第一步,先准备一个变量保存密码 第二步,只要密码不正确,就继续输入 第三步,每输入一次,就检查是否正确 第四步,输入正确后结束循环 第五步,输出登录成功
代码如下:
password = ''while password != '123456': password = input('请输入密码:')print('密码正确,登录成功')
这道题特别经典。 因为它能帮你真正理解:
循环不是为了“重复而重复” 而是为了“在条件满足之前,一直重复”
如果你想再练一下 break,也可以写成这样:
whileTrue: password = input('请输入密码:')if password == '123456': print('密码正确,登录成功')break
这两种写法都值得你看懂。
六、综合练习 4:统计 1 到 100 的和
这一题非常适合练循环和累加。
题目:
求 1 到 100 的总和。
先拆流程:
第一步,准备一个总和变量,初始为 0 第二步,从 1 开始 第三步,每次把当前数字加到总和里 第四步,数字不断加 1 第五步,到 100 为止 第六步,输出总和
代码如下:
total = 0count = 1while count <= 100: total += count count += 1print(f'1 到 100 的总和是:{total}')
你也可以用 for + range() 写成更简洁的版本:
total = 0for i in range(1, 101): total += iprint(f'1 到 100 的总和是:{total}')
这个练习特别重要。 因为它会让你开始理解:
循环不仅能重复打印 还能重复做计算、累计结果
七、综合练习 5:打印 1 到 100 中的偶数
这题特别适合练“判断 + 循环”。
题目:
打印 1 到 100 中的所有偶数。
先拆流程:
第一步,从 1 开始遍历到 100 第二步,每次判断当前数字是不是偶数 第三步,如果是,打印 第四步,如果不是,跳过 第五步,继续下一个数字
代码如下:
for i in range(1, 101):if i % 2 == 0: print(i)
如果你想练 continue,也可以写成这样:
for i in range(1, 101):if i % 2 != 0:continue print(i)
这两种写法的结果一样。 但它们表达逻辑的角度不同。
前一种是:
偶数才打印
后一种是:
奇数先跳过,剩下的再打印
这对训练你的代码表达能力很有帮助。
八、综合练习 6:输入成绩,直到输入一个合法分数
这个练习很像真实交互程序。
题目:
让用户输入成绩。 如果分数不在 0 到 100 之间,就提示重新输入。 直到输入合法分数为止。
先拆流程:
第一步,循环开始 第二步,输入成绩 第三步,判断成绩是否在 0 到 100 之间 第四步,如果合法,就结束循环 第五步,如果不合法,就提示重新输入
代码如下:
whileTrue: score = int(input('请输入成绩:'))if0 <= score <= 100: print('成绩输入成功')breakelse: print('成绩无效,请重新输入')
这题特别有价值, 因为它已经非常像真实系统会做的输入校验了。
你会明显感觉到:
循环负责反复输入 判断负责检查是否合法break 负责在满足条件时退出
这就是多个流程控制工具真正开始协同工作。
九、综合练习 7:打印九九乘法表
这个题前面单独学过, 现在放到综合阶段再看一遍,意义会不一样。
题目:
打印九九乘法表。
先拆流程:
第一步,先控制一共有几行 第二步,每一行里再控制打印几项 第三步,每一项都打印乘法表达式 第四步,每一行结束后换行
代码如下:
for i in range(1, 10):for j in range(1, i + 1): print(f'{j}×{i}={i*j}', end=' ') print()
这题的重要性,不只是它经典。 而是它非常典型地体现了:
外层循环控制大结构 内层循环控制细节
这正是很多更复杂问题的基础模型。
十、综合练习 8:打印一个直角三角形
这题适合练循环嵌套和图形思维。
题目:
打印一个 5 行的直角三角形。
先拆流程:
第一步,控制一共有 5 行 第二步,第 1 行打印 1 个星号 第三步,第 2 行打印 2 个星号 第四步,依次类推 第五步,每行结束后换行
代码如下:
for i in range(1, 6):for j in range(i): print('*', end='') print()
输出是:
***************
这道题很适合帮你继续加深一个理解:
很多图形问题,本质上都是“行数 + 每行数量”的循环嵌套。
十一、综合练习 9:输入一段文字,统计里面有多少个字符
这题适合把 for 遍历和计数结合起来。
题目:
输入一段文字,统计一共有多少个字符。
先拆流程:
第一步,输入文字 第二步,准备一个计数器,初始为 0 第三步,逐个遍历文字中的字符 第四步,每遍历一个字符,计数器加 1 第五步,输出总数
代码如下:
text = input('请输入一段文字:')count = 0for char in text: count += 1print(f'一共有 {count} 个字符')
虽然现在你还没学字符串长度函数, 但这个练习特别好。 因为它会让你体会到:
遍历本身,就是一种很重要的处理方式
十二、综合练习 10:找到某个字符后立刻停止
这题适合练 for 和 break。
题目:
遍历一个字符串,一旦遇到字母 h,就停止。
代码如下:
text = 'Python'for char in text: print(char)if char == 'h': print('找到 h,停止遍历')break
这个题表面不复杂, 但很适合让你体会:
循环不是只能老老实实走到底 有时候找到目标以后,就应该立刻停
这就是 break 在真实逻辑里的价值。
十三、现在开始,你应该逐渐学会“看到题目,先识别结构”
以后碰到题目,你先不要急着写代码。 先问自己:
这是顺序结构吗 这是分支结构吗 这是循环结构吗 有没有嵌套 有没有提前结束 有没有跳过某轮
比如:
输入成绩并判断等级 明显是分支结构
连续输入密码直到正确 明显是循环 + 判断
打印乘法表 明显是循环嵌套
统计一段文字的字符数 明显是遍历 + 计数
只要你先把结构识别出来, 代码就会好写很多。
十四、很多综合题的本质,其实只是“基础结构拼起来”
比如这题:
输入用户名和密码。 如果用户名正确,再判断密码是否正确。 如果都正确,输出登录成功。 否则输出失败。
你一看可能觉得有点复杂。 其实拆开就是:
输入 外层判断 内层判断 输出
代码如下:
username = input('请输入用户名:')password = input('请输入密码:')if username == 'admin':if password == '123456': print('登录成功')else: print('密码错误')else: print('用户名错误')
它并没有用到任何你没见过的新东西。 只是把前面学过的内容组合起来了。
这就是综合练习真正要帮你建立的感觉:
题目复杂,不代表知识点一定新 很多时候,只是你已经学过的结构拼起来了
十五、如果你现在写题还是容易乱,就坚持先写“口语版步骤”
这个方法真的很好用。
比如题目是:
输入一个数字,打印从 1 到这个数字的所有整数。
你可以先写:
先输入数字 再从 1 开始 每次打印当前数字 然后加 1 直到超过输入值为止
然后再翻译成代码:
num = int(input('请输入一个数字:'))count = 1while count <= num: print(count) count += 1
你会发现, 只要口语版步骤顺了, 代码往往就不会太乱。
十六、综合题里最容易出错的地方,不是语法,而是逻辑顺序
这个一定要提醒你。
比如一道题:
输入成绩,判断等级。
你如果把判断顺序写成:
if score >= 60: print('及格')elif score >= 80: print('良好')elif score >= 90: print('优秀')
那高分也会先被“及格”拦下来。
这说明什么。
说明综合题里最常见的问题,不是不会写 if。 而是流程顺序没想清楚。
所以你以后写代码前,一定要问自己:
这个判断应该先发生,还是后发生 这个循环应该先开始,还是先做初始化 这个结束条件是不是放对位置了
逻辑顺序,比语法本身更关键。
十七、今天一定要亲手完成的 4 个综合练习
第一个,输入数字,判断正负零。
num = float(input('请输入一个数字:'))if num > 0: print('正数')elif num < 0: print('负数')else: print('0')
第二个,连续输入密码直到正确。
password = ''while password != '123456': password = input('请输入密码:')print('密码正确')
第三个,打印 1 到 100 的偶数。
for i in range(1, 101):if i % 2 == 0: print(i)
第四个,打印 5 行直角三角形。
for i in range(1, 6):for j in range(i): print('*', end='') print()
这四题分别对应:
分支 循环 判断 + 遍历 循环嵌套
刚好能帮你把这一阶段的核心内容都练到。
十八、再做一个更像样的综合小程序
下面这个例子很适合作为这一阶段的真正收尾。
题目:
输入学生姓名和成绩。 如果成绩不在 0 到 100 之间,提示无效。 如果成绩有效,再输出等级评价。
先拆流程:
第一步,输入姓名 第二步,输入成绩 第三步,先判断成绩是否合法 第四步,如果不合法,输出无效 第五步,如果合法,再判断等级 第六步,根据等级输出评价
代码如下:
name = input('请输入学生姓名:')score = int(input('请输入成绩:'))if score < 0or score > 100: print('成绩无效')else:if score >= 90: print(f'{name},你的等级是优秀')elif score >= 80: print(f'{name},你的等级是良好')elif score >= 60: print(f'{name},你的等级是及格')else: print(f'{name},你的等级是不及格')
这个程序特别有代表性。 因为它已经不是单纯一个小语法点练习了。 它把:
输入 判断 逻辑运算 嵌套判断 多分支判断
全都串起来了。
你现在如果能把这种题真正看懂、敲出来、改一改, 说明这一阶段你已经走得很扎实了。
十九、到这里,你其实已经开始具备“写完整小程序”的能力了
这一点你可能自己感觉还不强, 但其实很重要。
因为你现在已经能写:
成绩判断程序 年龄分类程序 密码循环输入程序 求和程序 字符遍历程序 乘法表程序 简单图形打印程序
这些程序虽然都不算大, 但它们已经不再只是“单句语法演示”了。
它们开始具备流程了。 开始有输入、有判断、有循环、有结果输出了。
这说明你已经从“认识语法”慢慢进入“开始组织程序”的阶段了。
这是很关键的一步。
二十、写在最后
流程控制这一阶段,真正重要的,不是你学了多少个关键词。 而是你开始明白了一件事:
程序不是一大坨代码堆在一起 而是一步一步流动的
有的地方顺着往下走 有的地方要分支 有的地方要重复 有的地方要提前结束 有的地方会一层套一层
而你前面学的这些语法, 其实都是在帮助你控制这个“流动过程”。
所以这一阶段最宝贵的,不只是 if、while、for 这些词本身。 而是你开始建立起一种真正的程序思维:
面对一个问题,先想流程 面对一个流程,先看结构 面对一个结构,再选语法
这一步一旦站稳, 你后面进入列表、字典、函数这些内容时,学习体验会完全不一样。
本文小结
流程控制的核心,就是让程序学会顺序执行、条件判断和重复执行。 综合题的关键,不是记住更多语法,而是学会把问题拆成步骤。 很多看起来复杂的题,本质上只是顺序、分支、循环、嵌套这几种结构的组合。 写综合程序时,最重要的习惯是:先拆流程,再写代码。 如果你已经能写出几个带输入、判断、循环的小程序,说明你已经真正迈进编程入门阶段了。
下篇预告
从下一篇开始,我们进入第四阶段。
第 31 篇 列表 list 入门:Python 最常用的数据容器
从那里开始,你会发现:前面学的判断、循环,终于有了更像样的数据对象去操作。