这一篇很重要。前面你已经学了判断、循环、嵌套循环,手里开始有“工具”了。但很多新手到这一步会遇到一个新问题:
语法都认识 例子也能看懂 可一到自己写,脑子里就乱
这往往不是因为你不会语法,而是因为你还没真正养成“先想流程,再写代码”的习惯。
很多人刚学 Python,会下意识觉得:
编程就是把语法记住,然后敲出来
这句话不能说完全错,但只说到了一半。
真正写程序时,最关键的往往不是你会不会某个语法点, 而是你能不能把一个问题拆成清楚的步骤。
比如:
输入一个成绩,判断是否及格 输入年龄,判断所属年龄段 打印一个三角形 统计 1 到 100 的和 让用户不断输入密码,直到输入正确
这些问题看起来不一样, 但它们背后都有一个共同点:
你必须先想清楚,程序应该一步一步怎么走
这就是今天要讲的核心:
流程图思维
你不一定非要真的画图, 但你一定要学会像画流程图那样思考:
先做什么 再做什么 什么条件下往左走 什么条件下往右走 什么时候结束
这一层思维一旦建立起来,写代码会顺很多。
一、为什么很多人“会语法,但不会写题”
这个现象特别常见。
比如你明明知道:
if 能做判断while 能做循环for 能遍历range() 能生成数字序列
可一旦题目变成:
输入一个成绩,如果大于等于 60 输出及格,否则输出不及格
你还是会停住一下,想:
我该先写什么 输入放哪 判断放哪 输出放哪
这说明什么。
说明你卡住的地方,不是语法。 而是没有先把问题在脑子里走成一条清楚的流程。
所以很多人学编程真正需要补的,不只是语法知识, 而是“把题目翻译成步骤”的能力。
二、所谓流程图思维,本质上就是把问题拆成步骤
先说最朴素的理解。
流程图思维,不一定非要拿纸画方框和箭头。 它更重要的是一种脑子里的顺序感。
比如一道题:
输入一个成绩,判断是否及格
你要先在脑子里拆成这样:
第一步,输入成绩 第二步,判断成绩是否大于等于 60 第三步,如果是,就输出及格 第四步,如果不是,就输出不及格
你会发现,这其实已经是一张非常简单的“脑内流程图”了。
所以你现在先别把流程图想得太专业。 对入门阶段来说,它的本质就是:
把一个问题拆成有顺序的步骤
三、先想流程,再想语法
这个顺序特别重要。
很多新手一拿到题目,就立刻想:
这里是不是要用 if 这里是不是要用 while 这里是不是要用 for
这样很容易乱。
更稳的方式应该是:
先想程序要做哪些步骤 再去决定每一步该用什么语法
比如:
输入成绩 判断及格 输出结果
流程想清楚以后,你自然会发现:
输入用 input()判断用 if输出用 print()
语法是为流程服务的。 不是反过来先堆语法,再硬拼逻辑。
这个观念一定要尽早建立。
四、看一个最简单的例子:判断是否及格
题目是:
输入一个成绩,如果大于等于 60,输出及格,否则输出不及格。
很多人一看到就想直接写代码。 但我们先别急。
先写流程:
第一步,输入成绩 第二步,判断成绩是否大于等于 60 第三步,如果成立,输出及格 第四步,否则输出不及格
流程清楚以后,再写代码:
score = int(input('请输入成绩:'))if score >= 60: print('及格')else: print('不及格')
你会发现,代码几乎就是在翻译刚才那四步。
这就是流程图思维最直接的价值:
让代码不是“猜着写”,而是“按步骤翻译出来”
五、再看一个多分支例子:成绩等级判断
题目是:
输入成绩,90 分以上优秀,80 分以上良好,60 分以上及格,60 分以下不及格。
很多新手看到这里会马上被条件绕住。 其实还是一样,先拆流程。
第一步,输入成绩 第二步,判断是否大于等于 90 第三步,如果是,输出优秀 第四步,否则判断是否大于等于 80 第五步,如果是,输出良好 第六步,否则判断是否大于等于 60 第七步,如果是,输出及格 第八步,否则输出不及格
当你把这个流程拆出来以后,代码就自然了:
score = int(input('请输入成绩:'))if score >= 90: print('优秀')elif score >= 80: print('良好')elif score >= 60: print('及格')else: print('不及格')
注意这里最关键的,不是你记住了 elif。 而是你先在脑子里把“否则继续判断下一档”的流程走顺了。
六、流程图思维最重要的,不是画图,而是问自己这几个问题
以后你每拿到一个小题,都可以先问自己:
程序第一步要拿到什么 接下来要判断什么,还是计算什么 有没有分支 有没有重复 什么时候结束
这五个问题特别有用。
比如:
输入一个数字,打印 1 到这个数字的和
你就可以这么问:
第一步,先输入一个数字 第二步,要不要判断 不用,先做计算 第三步,有没有重复 有,要从 1 加到这个数字 第四步,什么时候结束 加到目标数字为止 第五步,最后输出结果
这样一拆,题目就清楚很多了。
七、程序里最常见的三种流程结构
到你现在这个阶段,其实最核心的流程结构就三种。
顺序结构 分支结构 循环结构
顺序结构,就是一步接一步。
比如:
输入姓名 输入年龄 输出结果
分支结构,就是根据条件走不同路线。
比如:
如果及格,输出及格 否则输出不及格
循环结构,就是某一步要反复执行。
比如:
从 1 加到 100 重复输入密码直到正确
你现在学过的几乎所有内容,都可以归到这三类里面。
所以以后你拿到题目时,可以先判断:
这是单纯按顺序做 还是中间有分支 还是要重复
一旦判断清楚,思路会清很多。
八、先练“顺序结构”的思维
比如这道题:
输入姓名和年龄,输出一句自我介绍。
流程其实很简单:
第一步,输入姓名 第二步,输入年龄 第三步,输出自我介绍
代码就是:
name = input('请输入姓名:')age = int(input('请输入年龄:'))print(f'大家好,我叫{name},我今年{age}岁')
这就是最基础的顺序结构。
没有分支 没有循环 就是按顺序把事情做完
很多复杂程序,本质上也是由很多这样的顺序步骤拼起来的。
九、再练“分支结构”的思维
比如这道题:
输入年龄,如果大于等于 18,输出成年,否则输出未成年。
流程是:
第一步,输入年龄 第二步,判断年龄是否大于等于 18 第三步,如果是,输出成年 第四步,否则输出未成年
代码就是:
age = int(input('请输入年龄:'))if age >= 18: print('成年')else: print('未成年')
这里你要慢慢形成一个感觉:
分支结构的关键不是 if 这个单词 而是“根据条件走不同路线”这个逻辑
语法只是表达工具。 真正决定代码怎么写的,是你脑子里的分支路径。
十、再练“循环结构”的思维
比如这道题:
打印 1 到 5。
流程是:
第一步,准备一个起始数字 第二步,只要这个数字还没超过 5,就继续打印 第三步,每打印一次,数字加 1 第四步,超过 5 后结束
代码可以写成:
count = 1while count <= 5: print(count) count += 1
你会发现,流程写清楚以后,while 为什么这么写、变量为什么这么变,都变得很自然。
这就是为什么我一直强调:
先想步骤,再写代码
十一、真正写题时,先用“口语版流程”特别有用
很多人卡住,是因为一上来就想写得像正式代码。 其实没必要。
你完全可以先用大白话把步骤写出来。
比如这题:
让用户不断输入密码,直到输入正确。
你可以先写成口语版:
先准备一个空密码 只要密码不对,就继续输入 如果输入正确,就结束 最后提示密码正确
然后再翻译成代码:
password = ''while password != '123456': password = input('请输入密码:')print('密码正确')
这个方法特别适合新手。 因为它能帮你把“题目 → 流程 → 代码”这条链路打通。
十二、很多题目一复杂,其实只是“结构组合”而已
比如这道题:
输入一个成绩,如果及格,再判断是否优秀。
这其实不是全新知识。 而是“分支结构 + 嵌套判断”的组合。
流程可以这么拆:
第一步,输入成绩 第二步,判断是否及格 第三步,如果不及格,输出不及格 第四步,如果及格,再继续判断是否大于等于 90 第五步,如果是,输出优秀 第六步,否则输出普通及格
代码就是:
score = int(input('请输入成绩:'))if score >= 60: print('及格')if score >= 90: print('优秀')else: print('普通及格')else: print('不及格')
所以你以后不要总觉得题目一复杂就是全新东西。 很多时候,它只是前面学过的几种结构拼在一起了。
十三、循环题也一样,先拆“重复部分”
比如这道题:
计算 1 到 5 的和。
你可以先拆:
第一步,准备一个总和变量,初始为 0 第二步,从 1 开始 第三步,每次把当前数字加到总和里 第四步,数字不断加 1 第五步,到 5 为止 第六步,输出总和
代码就是:
total = 0count = 1while count <= 5: total += count count += 1print(total)
这里最重要的,不是你会不会写 +=。 而是你有没有想清楚:
什么东西要重复 重复时每轮做什么 什么变量在变化 什么时候停
这就是流程思维。
十四、现在开始,你写题时最好强迫自己先写“步骤”
哪怕只写 3 行,也很有用。
比如题目是:
输入一个单词,逐个打印其中的字符。
你可以先写:
第一步,输入单词 第二步,逐个取出字符 第三步,每取出一个就打印
然后再写代码:
word = input('请输入一个单词:')for char in word: print(char)
这个步骤看起来好像很简单。 但它会帮你慢慢养成一个特别宝贵的习惯:
写代码前,先让脑子有路线
这个习惯会越到后面越值钱。
十五、你现在就可以开始学“伪代码”了
所谓伪代码,你可以理解成:
不像真正代码那么严格 但已经很接近程序步骤的描述方式
比如:
输入成绩 如果成绩大于等于 60 输出及格 否则 输出不及格
这就是伪代码。
它比口语更像程序, 但又没正式代码那么拘泥于语法细节。
你现在完全可以先这样写思路, 然后再翻译成 Python 代码。
这会比直接硬敲代码稳很多。
十六、看一个“输入年龄判断阶段”的完整思考过程
题目:
输入年龄,判断是儿童、青少年、成年人还是老年人。
先别急着写代码。 先写思路。
口语版流程:
先输入年龄 如果年龄大于等于 60,就是老年人 否则如果年龄大于等于 18,就是成年人 否则如果年龄大于等于 12,就是青少年 否则就是儿童
然后翻译成代码:
age = int(input('请输入年龄:'))if age >= 60: print('老年人')elif age >= 18: print('成年人')elif age >= 12: print('青少年')else: print('儿童')
你会发现,只要流程清楚,代码几乎就是照着翻译。
十七、写程序时,别总急着“写对”,先确保“想对”
这是一个特别重要的观念。
很多新手最大的问题不是不会写。 而是太急着一上来就写对,结果脑子没想清楚,越写越乱。
其实更稳的顺序应该是:
先把逻辑想对 再把代码写对
因为代码报错你还能改。 但如果逻辑方向一开始就错了,代码写得再顺,结果也不对。
所以以后碰到稍微复杂一点的题目, 宁可先花一分钟写步骤, 也别一上来就瞎敲。
这个习惯会帮你省很多返工时间。
十八、自己动手做一个“题目先拆流程”的练习
下面这道题你先别直接看代码。
题目:
输入一个数字,如果是正数,就输出正数;否则输出非正数。
你先自己写步骤。 比如:
第一步,输入数字 第二步,判断数字是否大于 0 第三步,如果是,输出正数 第四步,否则输出非正数
然后再写代码:
num = float(input('请输入一个数字:'))if num > 0: print('正数')else: print('非正数')
这个练习特别简单, 但特别适合训练“先想流程,再写代码”。
十九、再做一个“先拆循环流程”的练习
题目:
打印 1 到 10 中的偶数。
你先别急着写代码。 先拆流程:
第一步,从 1 开始 第二步,一直到 10 第三步,逐个判断当前数字是不是偶数 第四步,如果是,就打印 第五步,继续下一个数字
然后再翻译代码,比如用 for:
for i in range(1, 11):if i % 2 == 0: print(i)
你会发现, 只要流程拆对, “这里为什么要用 %,为什么要用 if,为什么要用 for”都会顺理成章。
二十、实操,做一个“输入成绩并给评价”的流程练习
题目:
输入成绩,90 以上优秀,60 以上及格,否则不及格。
先写流程:
输入成绩 判断是否大于等于 90 如果是,输出优秀 否则判断是否大于等于 60 如果是,输出及格 否则输出不及格
再写代码:
score = int(input('请输入成绩:'))if score >= 90: print('优秀')elif score >= 60: print('及格')else: print('不及格')
你现在最好把这个过程自己走一遍。 不要只看结果代码。 而要体会“题目 → 步骤 → 代码”的转换。
二十一、今天一定要亲手完成的 3 个练习
第一个,先写步骤,再写代码。
题目:输入年龄,判断是否成年。
你先自己写步骤,再写:
age = int(input('请输入年龄:'))if age >= 18: print('成年')else: print('未成年')
第二个,先写步骤,再写代码。
题目:打印 1 到 5。
你先写步骤,再写:
count = 1while count <= 5: print(count) count += 1
第三个,先写步骤,再写代码。
题目:逐个打印输入文字中的字符。
text = input('请输入内容:')for char in text: print(char)
这三个练习分别对应:
分支 循环 遍历
非常适合当前阶段做流程思维训练。
二十二、再做一个综合小练习
下面这个题目很适合作为今天的收尾。
题目:
输入用户名和成绩。 如果用户名是“小明”,再根据成绩判断是否及格。
你先自己拆流程:
第一步,输入用户名 第二步,输入成绩 第三步,判断用户名是不是小明 第四步,如果不是,结束 第五步,如果是,再判断成绩是否及格 第六步,根据结果输出不同提示
代码可以写成:
name = input('请输入用户名:')score = int(input('请输入成绩:'))if name == '小明':if score >= 60: print('小明,你及格了')else: print('小明,你还没有及格')
这个练习特别好, 因为它把顺序、分支、嵌套判断都串起来了。
二十三、写在最后
写程序这件事,真正决定你能走多远的, 往往不是你背了多少语法。 而是你能不能把问题拆成清楚的步骤。
因为代码说到底,不过是流程的翻译。
流程乱,代码就乱。 流程清楚,代码往往就能一步步写出来。
所以从今天开始,你要慢慢养成一个特别重要的习惯:
拿到题目,先别急着敲。 先问自己:
第一步做什么 第二步做什么 有没有判断 有没有循环 什么时候结束
这个习惯一旦养起来, 后面你会越来越明显地感觉到:
原来很多题,不是不会写, 而是之前根本没先想清楚。
本文小结
流程图思维的本质,是把问题拆成有顺序的步骤。 写代码时,应该先想流程,再选语法。 当前阶段最常见的流程结构有三种:顺序、分支、循环。 很多题目一复杂,并不是新知识,而是这些结构的组合。 学习编程最重要的能力之一,不是立刻敲代码,而是先把逻辑走顺。 代码本质上就是流程的翻译。
下篇预告
第 30 篇,我们会对这一阶段做一个真正意义上的综合收尾。
流程控制综合练习:把判断和循环真正用起来
到那一篇,我们会把 if、elif、else、while、for、循环嵌套这些内容真正串起来,做几个更像样的小练习。