06 - 流程图 VS 盒图?【三大结构|总结(上)】
本帖最后由 鱼C-小师妹 于 2021-4-28 19:43 编辑在线讲解:
https://www.bilibili.com/video/BV1HT4y1K7DY?p=8
相信看过前面几讲的童鞋,应该对流程图和盒图不陌生啦:
已经有认真勤思考的童鞋私信问小师妹:
什么时候用流程图?什么时候用盒图?师妹能详细讲一下吗?
好吧,那这一讲就带大家好好整理下二者的使用区别,毕竟温故才能知新吗~
先说结论:
**** Hidden Message *****
接下来的内容主要以手写画图为主,代码较少哈~
我们日常编写程序的时候,都是下面三种结构的组合:
[*]顺序结构
[*]选择结构
[*]循环结构
而这三种结构在之前的课程中都有出现,不同的结构有不同的代码风格。
先从使用最广泛的顺序结构说起。
顺序结构
这是使用最最最最最最..多的一种结构。
这种结构用来描述顺序执行的程序,常见的“三步走”:
输入数据 + 处理数据 + 输出数据
就是顺序结构。
在流程图中就是使用流程线将程序自上而下连接起来,按顺序依次执行:
执行完上面的语句,才能就执行下一条。
无论是简单问题还是复杂问题,想使用顺序结构来描述算法。
必须将解决问题的方法描述成可以顺序执行的操作步骤。
就像 00 讲的百钱百鸡问题,就是求“不定方程整数解的问题”。
我们用穷举法来依次对公鸡,母鸡,小鸡进行赋值,来“试”结果。
当然仅用顺序结构无法编写完上面的程序,需要结合其他两种结构。
总之,顺序结构是程序的基石,就像建造大楼的“脚手架”一样,给程序运行提供支持。
选择结构
有选择,程序才有了灵魂。
很多时候,程序需要根据给定的条件作出选择,就像平时在 B 站的抽奖送书活动。
只有符合“关注 & 转发”条件的童鞋,才能参加抽奖,否则无效。
就是如果条件成立执行步骤 A,否则执行步骤 B。
在很多游戏程序中,程序会判断玩家的生命值,如果该值大于 0,就让玩家继续游戏,否则,显示游戏结束。
选择结构就是用来实现这种控制逻辑的程序结构。
根据可选择的分支多少,通常可以分为一下三种:
[*]单分支
[*]双分支
[*]多分支
在流程图中使用菱形(选择)框来表示:
把给定条件写在判断框内,两个出口分别指向两个不同的分支。
在指向条件成立的出口处表明 “True/Y” 或 “False/N” 。
在 Python 中使用 if 语句来描述单分支结构。
但给定的条件满足时,执行语句体,否则执行 if 语句后面的代码:
就好比你们看完小师妹的视频,如果“喜欢”就要投币三连:
like = input('喜欢小师妹的吗')
if like == '喜欢':
print('一键三连')
如果程序只是这种单一结构,画成流程图最方便。
除了 if 语句,还可以使用 if..else.. 语句描述双分支结构。
当给定的条件满足,选择执行 if 语句体,否则选择执行 else 语句体。
流程图和单分支一样,只不过这次是有步骤 B 的语句。
还是用上面的例子,如果 like 值不是“喜欢”,那么就打印“救救孩子吧”:
like = input('喜欢小师妹的吗')
if like == '喜欢':
print('一键三连')
else:
print('救救孩子吧')
同理也是画成流程图最方便!
通过组合或嵌套多个 if 语句就可以实现多分支结构啦,往往就这 3 种形式。
1、并列使用多个 if 语句,通过设定不同的条件让流程进入不同的分支。
这是新手最最最最最喜欢的一种结构,因为一下就能想到:
if number < 33:
pass
if number == 33:
pass
if number > 33 and number < 40:
pass
if number >= 40:
pass
pass 语句是一个空语句,表示什么也不做,当占位符用。
程序中的所有条件,都用 if 来写,而且相互独立。
初学者这样写没问题滴,这样的话就只能画成流程图。
因为盒图是需要“嵌套”滴!
2、嵌套使用多个 if 或 if..else.. 实现多分支选择结构。
在日常开发中很常用,实现上面代码的同时还可以少写一句:
if number < 33:
pass
else:
if number == 33:
pass
else:
if number > 33 and number < 40:
pass
else:
pass
这种结构有个缺点就是分支越多,缩进就越多,通常不建议超过 3 层。
这种结构就适合画成“盒图”,如果是流程图就会非常乱!
画图目的就是是为了帮助自己理清思路,而不是搞晕自己。
3、使用 if..elif..else 就可以大大优化 2 的不足。
这是一种类 1 的平面化结构:
if number < 33:
pass
elif number == 33:
pass
elif number > 33 and number < 40:
pass
else:
pass
利用 elif 语句代替 else..if 语句就能使多层缩进结构平面化,提高代码可读性。
而这种结构还是画成盒图最方便~
到这里三大结构中前两个都梳理好了,第三个“循环结构”是三个中最难滴!
我们留到下节课来说,童鞋们请认真消化上面两种结构再看下一级哦~ 我不知道是谁发明的流程图
但是我觉得它就是个鸡肋,高手根本就不用它,而新手还当个宝 wp231957 发表于 2021-4-11 17:51
我不知道是谁发明的流程图
但是我觉得它就是个鸡肋,高手根本就不用它,而新手还当个宝
对小白来讲简单明了啊{:10_250:} wp231957 发表于 2021-4-11 17:51
我不知道是谁发明的流程图
但是我觉得它就是个鸡肋,高手根本就不用它,而新手还当个宝
大神不懂小白的苦 111 {:7_112:} {:5_109:} 一般用盒图?
我喜欢小师妹 kkkkk 1 6666 感谢 check
沙发 1 test 学习一下下
页:
[1]