【python基础知识】19.产品思维以及流程图的使用 - 思维篇

简介: 【python基础知识】19.产品思维以及流程图的使用 - 思维篇

前言


这是一节思维课程,我会向大家讲述如何利用编程知识去解决实际生活的问题。


我曾反复提到,我们学习编程的目的从来不是为了考试,而是要学会用编程能力帮自己解决实际问题。


但我们发现如果只是学习基础知识的话,还是不能解决实际问题。这就好比我们在学校学习了很多公式定理,但却发现它们在生活并没有什么用处。

1.png其中一个原因是因为生活经验和所学知识之间存在脱节,导致知识无法运用到生活中。


编程技能也是如此:

45.png

对于编程来说,其实我们每个人都有足够的生活经验,在过去的一段时间里也掌握了基础知识,那么中间缺的究竟是什么呢?


产品思维


我认为,这道连接编程知识和解决实际问题的桥梁就是“产品思维”。

3.png

这里我所说的【产品】,并非百货商场货架上的“产品”,而是“为自己或他人服务的程序”。说到这一点,我想跟你分享两个学员案例。


有位学员是大学老师,每次备课都要准备PPT。有时候一份PPT需要两三百页,并且重复的格式特别多。学完了“模块调用”后,他当时问我,有没有啥模块,可以帮他自动制作幻灯片。


我给他推荐了“Presentation”模块,并告诉他可以用这个模块创建PPT、按预想的格式填充PPT每页内容。


没想到的是,过了几天,他就跟我说,这个模块他已经自学学会了,还做了一个可以自动制作PPT的程序。只要先准备好素材,双击运行程序,就会自动生成PPT,类似这样:

image.png

有了这个程序,过去他每周需要花两天时间制作的PPT,现在只需要用2小时整理素材,后续工作全都可以交给程序完成。


像这类“为自己服务的程序”,就是合格的【产品】。


还有一位学员是名高三学生。做完项目后,他不满足于课程里的小游戏,受好奇心的驱使,自己也写了一个小游戏。大概长这样:image.png这个程序是个文字冒险游戏,可以提供给朋友们玩耍。游戏剧情会根据用户的选择来变化,甚至还有游戏记录存档的功能。


像这类“为他人服务的程序”,也是合格的【产品】。


于是我在想该如何把这种“DIY产品”的意识教给更多人呢?这就是这一关的核心知识,我希望你上完今天的课程,再加上一些探索和尝试,也能制作出自己的【产品】!


首先我会介绍一个思维工具——流程图,掌握了这一工具之后,我们再来聊聊产品设计的几大步骤。


流程图


工欲善其事必先利其器,我们首先要学习的是“流程图”,如果不先掌握“流程图”这个分析与思考的工具,就很难实践“产品设计”的相关方法。


相信大家之前一定也接触过流程图,我们可以把流程图理解成“用一种图示描述事物进行的过程”。比如我们去注册使用共享单车的过程,可以画出这样的流程图:

6.png掌握了流程图后,你既可以用它分析思考问题,也可以用它搭建产品框架,还能用它设计代码逻辑。


所有的流程图,总结起来有三种类型:7.png是不是和我们之前学的条件判断和循环语句,有异曲同工之妙?


接下来让我们一个个来看。


顺序结构8.png

当一件事情是按顺序进行的时候,我们就用顺序结构。一般会用到三种图形:9.png有些我们习以为常的行为,也可以拆解成一定的步骤。比如当我们在淘宝剁手的时候,粗糙的流程图是长这样的:10.png现在请你来思考一下,对于“煮饭”这件事,一个简单的流程图可以怎么画?


你可以找一张白纸或在电脑上试一试画出来,画好后继续。


这道题没有标准答案。老师做了一个简单版和复杂版的流程图。

11.png流程图画出来之后,可以帮助我们梳理代码逻辑,逐步实现。


比如我们想写一个根据圆的半径(R)来求面积(S)和周长(L)的代码,可以画出以下的流程图:

12.png请实现一下上述流程图的代码,试试看。


参考代码:

# 如流程图所示,求圆的面积和周长的代码
# 圆周率(pi)取3.14即可
pi=3.14
a=float(input('请输入圆形的半径R:'))
print('圆的面积是:{},圆的周长是{}'.format(a*pi*pi,a*2*pi))

可以看到,代码都是按照流程图中的步骤写出的。


顺序结构,很简单,我们就讲到这里。


条件结构

13.png接下来,我们继续学习“条件结构”。14.png“条件结构”主要是为了展现,在不同的条件下如何按不同的逻辑行事。


在这里,我们要补充一个图形,当流程图中遇到需要判断条件的节点时,需要用“菱形”表示。15.png说起“条件结构”,我就想起了一个“黑”程序员的笑话:

16.png其实,妻子表达的意思,用流程图画出来是这样:17.png但是,程序员丈夫把妻子的意思理解错了,所以闹出了笑话。


他到底是哪儿弄错了呢?我们做一个练习:请把程序员丈夫的逻辑画成流程图,可以找一张白纸画流程图,画好后我们继续。


参考答案:18.png同样地,写有条件判断结构的代码时也能用流程图帮我们梳理逻辑。


例如你想写一个【求绝对值】的程序,将正数负数都转化为正数。

----- 代码实现效果 -----
输入:5
输出:5
输入:-2
输出:2
输入:-101.22
输出;101.22

这里有一个条件判断,即根据输入的数是正数还是负数会有不同的操作,那么把流程图画出来就是:

19.png实现代码如下:

# 按流程图中的步骤写代码
print('欢迎使用绝对值计算程序。')
R = float(input('请输入数字:'))
if R>=0:
    S = R
elif R<0:  # 这里可以用“else:”代替“elif R<0:”
    S = -R
print('所求绝对值是:' + str(S))

不难,但是用流程图写代码,真的非常清晰,对吧?好啦,条件结构就讲到这儿啦。


循环结构

20.png最后一种循环结构,是用来描述在指定情况下,按某种重复的逻辑行事。21.png在前面“共享单车”的流程图案例中,就有一个循环结构:22.png以淘宝购物为例,在最后提交订单的时候,也有一个循环结构:23.png你发现了第二个循环结构和第一个循环结构的不同之处么?


第二个循环结构比第一个多了一处菱形,用来负责“条件判断”,当条件为“不成功”时则继续循环。


现在,三种循环结构你都了解了吧,我们来做一个综合练习巩固一下。请把以下的逻辑,用流程图的形式表现出来。

摩拜单车使用逻辑:
1. 先要注册、交押金并充值
2. 找到摩拜单车,用手机扫码解锁单车,然后开始计费
3. 有时候车是坏的,手机会提示:“此车需要维修,请换一辆车”,这种情况不会进入计费,需要换一辆车再扫码
4. 到目的地后锁车,可以选择余额支付、微信支付、支付宝支付
5. 支付的时候如果余额不足会失败,需要更换其他支付方式。

怎么样,画出来了吗?


我们看看参考答案:

24.png到这里,三种结构的流程图我们就学完了,我们再来总结一下流程图的图形结构:25.png26.png有意识地使用流程图,可以锻炼我们的逻辑思维能力,也可以让我们在敲代码前整理思路,有一个明确清晰的指引。


学完流程图后,我们就可以尝试设计产品了。


产品设计


首先,想问你一个问题;你觉得要用编程解决生活中的实际问题,哪个流程更可靠?

A.先努力提高编程能力,当自己能写出比较复杂高级的代码时,再看看如何解决生活中的实际问题
B.有了一定的编程基础,从生活中发现可以用编程解决的问题,然后尝试制作技术方案、针对性地提高技术能力,最后写出解

B选项更加可靠。从生活中找到可以用编程解决的问题,再想办法解决,是提高编程实战能力的关键。


对于A选项,积累编程能力很重要,但编程知识范围和体量巨大。如果只从积累编程能力出发,不从生活经验和实际想要解决的问题出发,会让你难以抓住学习重点。建议在积累知识的同时也积累一些对生活经验的思考。


和B选项类似的是,真实世界中的“编程”,与两种角色最为相关——产品经理和程序员。


产品经理负责告诉程序员,要做一个怎样的产品,程序员接到需求后,会制作技术方案,实现代码,最终制作出产品经理所描述的产品。

27.png像这样,产品经理把产品任务提交给程序员的过程,在互联网公司称为【提需求】。就像你去一家餐厅点餐一样,点了菜,大厨给你制作菜品。你给大厨下单的过程就是【提需求】。


如果我们想设计出服务于自己的程序,就需要自己“做自己的产品经理”,兼顾产品经理和程序员两种身份,自己给自己【提需求】。


那我们到底应该如何发现需求,如何提出需求呢?

28.png

如何提需求


要想提出需求,我们首先要学会留意生活和工作中,哪些地方不方便、不爽、存在障碍,也就是我们常说的“痛点”。


根据大家现在的技能水平,有两种需求最值得关注:29.png我们在平时的工作和生活中都可以尝试思考,是否有“重复性劳动”可以被程序替代?是否能够“制作工具”帮我们解决问题?


我们都知道,编程能够解决重复性劳动。因此,只要我们对“重复性劳动”格外关注,就很容易提出需求:30.png另一类需求来源是“制作工具解决问题”。有时候,我们可以通过技术手段制作一些实用的工具,提升效率。31.png到这里,可能有同学会觉得:站着说话不腰疼,提需求容易,但我们只学完了基础语法课,我真的做得出来么?


的确,许多需求完成起来还比较困难。但你应该先记录下来,即使是你现在一时间还无法解决的需求。


记录需求的好处是“建立明确的编程目标”。以实现这些需求为目标,你可以很清晰地感受到自己编程能力的成长,有朝一日你实现自己需求,制作出完整产品的时候,一定会开心得像个两百斤的孩子。


这里,我推荐大家用一张表格做记录:32.png记录需求的习惯,本质上也可以锻炼我们提需求的能力。此刻,有句话想送给你:33.png无可否认的是,即使是2023年了,目前我们的劳动状态中,依然有太多重复、单调、无聊的时刻,就连看似光鲜的“脑力劳动”中亦是如此,我们以社畜自嘲,千百次叩问工作的意义为何。


这种强烈的厌倦感可能浮现在你一行行地复制、粘贴、比对数据;一遍遍地用相同的话术去处理客户重复的问题;一次次地费劲地想着这周的工作报告如何写得和上周的不太一样……


但是老师想与大家共勉的是,不要对重复性工作习以为常,毕竟,编程存在的目的就是解决人类的问题,不能提升人类社会的效率和幸福感的技术手段都是耍流氓。


不要自我安慰说“反正大家都是这么过来的”,也不要对无奈的生活习以为常,暗自认定“我没有办法解决这个问题”。


程序员可能是世界上最善于解决问题的一群人,相信已入门编程的你,也慢慢会有这种直面问题、解决问题的底气和精神。


如何设计解决方案

34.png提完需求的下一步,就是设计解决方案。也就是说,我们要设计编程思路,解决之前提出的需求。


设计编程思路解决需求,其实和“求解编程问题”类似。还记得我们之前的求解编程问题的5个步骤吗?35.png“为需求设计解决方案”其实就是另一种形式的“解编程题”,它们都需要明确目标、思考需要用到的知识、思考切入点、尝试一步步解决。


不过,“为需求设计解决方案”往往比“解编程题”更加复杂,也更加接近生活。为了让我们的思考过程更有结构,在这里我们需要用前面新学到的【流程图】。


第0关我给大家讲过一个小案例:我们公司的行政小姐姐,每个月都需要统计考勤,计算大家的迟到时长和迟到次数。但是这件事枯燥无味,显然是一个重复性劳动。


她要处理的考勤表长这样子:36.png所以,这里就产生了一个需求:37.png拿到这个需求,我们就可以制作第一张流程图,拆解、分析这项重复性工作是如何进行的:38.png在这里,使用流程图分析,可以让自己清晰地看到整个工作过程。这有助于我们接下来思考问题:哪些工作可以被程序替代?


我们知道,程序可以很容易地读写文件、处理信息(比如做计算),所以,在这个案例中,标黄的都可以比较方便地利用程序完成:39.png我们知道了要用程序去替代这些繁琐的步骤,接下来的任务就是【写出代码逻辑】。


首先我们可以优化一下流程图。比如标记颜色是为了方便人完成工作,机器并不需要这个步骤,用字典存储数据即可。40.png制作出“改良版流程图”后,我们就可以开始下一步:求解编程问题的5个步骤。41.png尝试实现代码的过程,是对我们已学知识的检验。但无可避免地会遇到一些卡点:image.png

有些问题是以现有知识还无法解决的,这时需要我们根据需求自学、补充相应知识,我们可以把这些新知识当成进阶之路上的一个小目标,朝着它前进。


比如对于问题1和2,需要我们去自学新的模块(如openpyxl)。当然,自学总会有坑,未来我们会出一门《自动化办公》的课程,提高你的学习效率。


在解决问题的过程中,你又会产生新的问题,但这都不要紧。相信我,你的编程能力就是在这一轮轮的循环中不断精进。


由于实现这个项目还需要讲解许多新知识,课堂上篇幅有限,老师在此就不做展开,主要感受一下制作“产品”的整体思路即可。


在下一关的最后一个实操项目,我会带着大家实现我司另外一个小姐姐——你很熟悉的助教酱酱自己做出来的的一个程序,主要运用到的是我们之前学过的知识,也算是作为对这门课的一个综合复习。


那么,用流程图总结一下刚刚我们谈论的这些内容,就可以得出产品设计的步骤了:

image.png

当然啦,这一关我们展示的【产品】看起来还非常简单,为了做出更高级,或者为更多人服务的程序,未来我们还需要学习更多技能,不断提升编程水平。

44.png本节完美结束,撒花~希望大家多多练习,早日成为大神!

相关文章
|
7月前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
203 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
8月前
|
分布式计算 DataWorks 数据处理
产品测评 | 上手分布式Python计算服务MaxFrame产品最佳实践
MaxFrame是阿里云自研的分布式计算框架,专为大数据处理设计,提供高效便捷的Python开发体验。其主要功能包括Python编程接口、直接利用MaxCompute资源、与MaxCompute Notebook集成及镜像管理功能。本文基于MaxFrame最佳实践,详细介绍了在DataWorks中使用MaxFrame创建数据源、PyODPS节点和MaxFrame会话的过程,并展示了如何通过MaxFrame实现分布式Pandas处理和大语言模型数据处理。测评反馈指出,虽然MaxFrame具备强大的数据处理能力,但在文档细节和新手友好性方面仍有改进空间。
|
8月前
|
数据采集 人工智能 分布式计算
🚀 MaxFrame 产品深度体验评测:Python 分布式计算的未来
在数据驱动的时代,大数据分析和AI模型训练对数据预处理的效率要求极高。传统的Pandas工具在小数据集下表现出色,但面对大规模数据时力不从心。阿里云推出的Python分布式计算框架MaxFrame,以“Pandas风格”为核心设计理念,旨在降低分布式计算门槛,同时支持超大规模数据处理。MaxFrame不仅保留了Pandas的操作习惯,还通过底层优化实现了高效的分布式调度、内存管理和容错机制,并深度集成阿里云大数据生态。本文将通过实践评测,全面解析MaxFrame的能力与价值,展示其在大数据和AI场景中的卓越表现。
177 4
🚀 MaxFrame 产品深度体验评测:Python 分布式计算的未来
|
8月前
|
人工智能 分布式计算 大数据
MaxFrame 产品评测:大数据与AI融合的Python分布式计算框架
MaxFrame是阿里云MaxCompute推出的自研Python分布式计算框架,支持大规模数据处理与AI应用。它提供类似Pandas的API,简化开发流程,并兼容多种机器学习库,加速模型训练前的数据准备。MaxFrame融合大数据和AI,提升效率、促进协作、增强创新能力。尽管初次配置稍显复杂,但其强大的功能集、性能优化及开放性使其成为现代企业与研究机构的理想选择。未来有望进一步简化使用门槛并加强社区建设。
376 8
|
供应链 数据可视化 数据挖掘
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
本文详细介绍了第十一届泰迪杯数据挖掘挑战赛B题的解决方案,涵盖了对产品订单数据的深入分析、多种因素对需求量影响的探讨,并建立了数学模型进行未来需求量的预测,同时提供了Python代码实现和结果可视化的方法。
386 3
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
|
机器学习/深度学习 自然语言处理 数据可视化
基于Python大数据的京东产品评论的情感分析的研究,包括snwonlp情感分析和LDA主题分析
本文探讨了基于Python大数据技术对京东产品评论进行情感分析的研究,涵盖了文本预处理、情感分类、主题建模等步骤,并运用了snwonlp情感分析和LDA主题分析方法,旨在帮助电商企业和消费者做出更明智的决策。
480 1
基于Python大数据的京东产品评论的情感分析的研究,包括snwonlp情感分析和LDA主题分析
|
运维 Serverless 测试技术
函数计算产品使用问题之怎么使用python读取csv文件
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
11月前
|
Python
从零到一:构建Python异步编程思维,掌握协程与异步函数
从零到一:构建Python异步编程思维,掌握协程与异步函数
68 0
|
存储 运维 Java
函数计算产品使用问题之如何使用Python的requests库向HTTP服务器发送GET请求
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
217 8
|
运维 Serverless API
函数计算产品使用问题之如何在Python中使用环境变量
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
106 8

热门文章

最新文章

推荐镜像

更多