Test book

4月25日总结

下一个python学习阶段就是用自己之前所学的知识完成一个项目。第五周的时候我还在想我掌握这点python知识到底能让我做出什么事情出来呢?第二周学了用if语句和def来编猜数字游戏,第三周学了list和循环来画画板。第4周学了进阶版list来编AI版猜数字,第五周学了class类和self来画水彩画板。即使这些编程作业没有想自己的项目难度大,但在实际编写中我还是编出一堆BUG,如果是自己的项目在没有根本提示的情况下怎么才能写出代码呢?

首先还是先回答这几个问题吧?

为什么不组织线下碰面


python学习小组是建立在充分沟通的基础上的。沟通,交流的越充分,学习的效果越好。线下聚会是最好的沟通模式,不用再在微信上组长问话时假装自己不在线了(我经常干这种事),但之前似乎没有任何小组搞过线下碰面。按大妈的话讲,人和人之间存在一个绝对领域(出自动画EVA),只有当面基之后,得到对对方的信任之后才有可能打破绝对领域....其实当建立学习小组的时候,就有这个隐藏的梗了,就是每人组长都有权利组织线下聚会或者其他活动了,权利在那儿,怎么用是你的事了。这次上海线下碰面效率很高,以下是大妈还没来时之前一小时的成果:

  • 介绍了自己想做的项目
  • 分析项目的可行性,可行性包括(情景,人和人的交互,代码所需要的知识,市场上有没有同类产品等等)

这放在微信群里似乎要花上不少时间来消化(还必须在全员都在的情况下)

总结:谁主张,谁执行,权利在组长手里,看他打什么牌。

大妈在Github哪儿埋了什么梗


用了这么久github,他到底是什么,现在给我感觉他就是一个网盘,什么东西都可以往里塞,但Github记录了我塞东西先后的历史,那些东西发生了变化,就这个特性决定了Github的代码仓库的优势了,如果我们共同进行一个项目,你写500行代码,我写500行代码,两个人和在一块运行的话,出现BUG的话寻找起来相当麻烦,但在Github上的代码仓库上还有什么比能有运行的代码更有说服力呢在查看版本历史上那个地方出现BUG一目了然,因为就你上传了代码后,才出现的BUG。合作通过代码构造出自己项目中的软件,这种沟通协作出来的模式就是最自然的模式。

总结:边写代码变运行,保证任何时候都可运行,可预见。

项目如何起步


之前看美剧风骚律师时,想到的一个项目,碎纸复原。之前这看似很复杂的项目,实在想不出如何用现有的python知识来实现。这时你需要将碎片复原这件事细分,用软件的话分成三件事:1)import 2)处理 3)export

  • 输入 :你需要输入图片即碎纸的图片
  • 处理 : 人工处理的话需要先找吻合的地方,或者按照拼出的已图片寻找下面可能出现的图形的样子。计算机处理的话可以选择暴力处理的方法,先生成所有可能的大图,然后OCR所有的图片(扫描图片中的文字),OCR我们可以找到用python写的开源代码,最后把扫描生成的文字列成一个list,用len(list)即告诉你列表中有多少元素,元素最多的就是我们想要拼成的图片。
  • 输出 :把最后 len 最多的图片输出。

里面绝大部分pyhon知识没有超出我们的范围。可是之前为什么想不到呢?OCR文字扫描之前也知道可为什么得不出这个梗呢?或许之前犯了学习六律中的一律: 不要假设问题不可分析(一旦假设问题不可分析,就会忽视大量发现隐藏模式的机会。)项目起步没有想象中的那么难,把项目分成三步,一步一步分析可行性,记住人脑最讨厌做重复的事情,而计算机最擅长做重复的事情。

四人如何分配工作


以碎纸复原为例,输入,输出,处理,三个步骤分别分配三个人进行,怎么确保这三位同学同时启动并写代码呢?首先这三位同学的启动点是图片,可以去处理数据的样本数据是图片,但是我们可以模拟数据。比如正在做OCR的同学处理的信息只要扫描出图里地文字就行,他的工作量就是寻找OCR的python开源代码,然后扫描出图中文字就行,不需要之前同学提供的样本数据(图片)。只要我们所做的步骤能够处理模拟的数据这样就能保证三个同学同时进行。不用你等我,我等你。

总结 :项目处理的是数据,为确保每个小伙伴都能同时写代码,可以模拟数据。