1901050119-自学训练营学习7群-Python入门

  • 姓名:王银/Galaxy
  • 学号:1901050119
  • 学习内容:Python 14 天入门
  • 学习用时:46.5h

每一个概念都不简单,“自学”更是如此

经验基础

先介绍一下我的个人经验基础。在填课前问卷的时候,我选的是学过一种语言,做过demo程序。其实,选这一项只是因为没有更贴切的选项。其实我学过好几种语言,只是没有一种达到精通的。

我很早就对编程感兴趣,然而,这个“早”只是相对的,事实上发现的有点晚,高考填志愿的时候我执拗地选择了物理专业,而后才发现新大陆……那又怎样,我是兴趣驱动型的,我要自学编程,我要考研转专业……所以,从本科开始学C语言,我就把学校发的清华那本教材翻来覆去学了很多遍,当时根本没想到可以多买几本书对照着看,直到后来参加工作用C语言写代码,也没想着添置新的参考书。不知道自己不知道的时候,真可怕!

后来,我又执拗地按照自己的意愿行事,考了电路与系统专业的研究生,离计算机近了些,然后利用实习的机会,又自学C++,当然有“同事老师”可以咨询,学的应该还凑合,因为,当我应聘软件工程师的时候,如愿拿到两份外企的Offer,一个是北京的C++语言,一个是西安的C语言。后来,我去了西安的公司。大家做的不是从无到有的工作,只能算作模块化编程吧,在原有代码的基础上增添、修改功能,不需要自己搭建编程环境。所以,我那一本教材上的内容也够用了,因此也没长出新的本事,没有被迫学会整套技能。后来,也学了一些html、css、C#,但都比较肤浅,没有走得很远。究其原因,还是自己的操作系统太陈旧,而又不知道可以升级造成的。

查漏补缺

那份工作持续了4年多,我辞职回家了,一边带孩子一边瞎折腾。直到《自学是门手艺》又让重新点燃了我的编程热情。这一次,不为给别人打工,就想掌握这门手艺,为己所用。

早在3月份我就报了自学训练营,因为自己本来自由时间就不够充裕,担心无法在规定时间内配合作业学完书上的内容,而且对于搭建环境不太擅长,所以特意选了比较靠后的班次,给自己留足时间去攻关。可是,学而不用、学而不练,加上学习时间不紧凑,总是前学后忘,所以,直到开营一本书还是没有完整通读下来。

我用亲身经历证明,搭建环境真的非常摧残信心!我在开营前专门留出四五天时间通关,耗费很多精力,折磨死大批脑细胞……所幸最终基本上突围成功。正因为经历了这般艰辛的未雨绸缪,自学营前两天搭建环境和熟悉工具的作业才得以“轻松”完成,也算是对之前职业生涯的查漏补缺。

在训练营学习和自己死磕的最大区别就是,这里针对每一个难点,都有对应的文档资料可以参考,你不必大海捞针碰运气,不用一头雾水干着急,顺着图例的指引前进就对了,再不行,还有战友可以交流,实在搞不定,还有教练指点迷津……总之,再也不用冤死脑细胞,你一定能一路走下去……从这个角度望过去,我之前的“未雨绸缪”多少有点惨烈。如果再给我一次重新选择的机会,我宁愿不要那么“睿智”。

因为前期已经花了大量时间来搭建、配置环境,遇到的问题基本上已经解决了。所以Day2作业的主要时间都用来学习文档。之前毫无头绪地照着书上的指示配置,成功了就庆幸,失败了就焦急,根本不知所以然,心里完全没底。

回过头来学习文档,思路逐渐清晰,明白了那些命令的含义,最重要的是,知道了如何按需配置,终于从苍蝇模式过渡到蜜蜂模式。由此深刻体会到,参加训练营的最大意义,其实就是面对陌生地形,可以直接获得精准图例,迅速了解全貌。跳过苍蝇模式,直接开启蜜蜂模式,然后,循着光飞过去就是了。

基础知识应用

回过头来看,自学营的整个作业体系设计得很精巧。先是熟悉工具、搭建环境,然后从打印一个最简单的“Hello World!”开始,让大家通过实现一个个简单而完整的功能把Python用起来,然后选取一个很实用主题层层递进。让大家亲身体会同样一个功能,如何一步步扩充、一步步改进,从简陋到完善,从笨拙到讲究,一步一步见证成长。

Day3看文档差不多花了5个小时,感觉实现计算器的逻辑应该很简单,本来想独立完成,但是,对Python的编程规则还不太熟悉,而且太久没写代码了,真的要动手时,居然又无从下手。真切感受到从0到1的艰难,于是Google了一个范例,又参阅了一位学友放在issue里的代码,总算可以下笔了。

先大概写出核心功能,然后不断尝试优化,这个过程中渐入佳境。因为工具用的不熟练,Jupyter lab和VS两边交替调试,走了不少弯路,不过,功夫不负有心人,最后终于实现了自己比较满意的效果。

Day4看文档1小时,独立写代码并调试1小时,感觉越来越得心应手。虽然还不能一气呵成,但是已经知道各种困惑应该去哪里查资料,进而顺利解决问题,每天都感觉到进步。

Day5深刻体会到在用中学和单纯用眼睛“学”的巨大差异了。看书的时候,感觉努努力都能看得懂,似乎明白该怎么用了。但是要写代码的时候,根本不是信手拈来啊,反复来回不停地翻文档,每一遍都有新收获。文档解决不了的问题,就问Google,总有前人留下的足迹,任何时候都不孤单。

Day5的任务知识覆盖面比较广,需要融会贯通,交叉使用,感受到了不同概念之间是如何产生联系的,终于体会到为什么笑来老师说《自学是门手艺》是《通往财富自由之路》的实践版了。

完成Day6作业之前,先把字符串相关内容仔细复习整理了一遍,认真做了笔记,又发现了不少仅仅靠阅读没能深入理解的内容,眼过千遍不如手过一遍!做作业倒是没用多少时间,但是感觉程序通用性不强,暂时却无力改进。后面很多内容还没看,温故知新,一步一个脚印,慢即是快。

Day7作业距离上次时间间隔有点长,因为我之前一直没能把书看完。第一部分好不容易看完了,到后面看着看着感觉前面的内容已经没什么印象了,所以,这次趁着边用边学,及时做笔记,让看过的内容都连贯起来。用纸笔记笔记收获很大。

本以为Day8的作业很简单,结果做的过程中困难重重。对于错误和异常的触发机制、对应的分类以及处理方式理解太粗浅,搞得自己摸不着头脑,乱试一通,代码编辑器用的也不熟练,加了断点忘记取消了,多亏教练指点,思路终于逐渐清晰,这只是个开始,目测前面埋伏还很多……

Day9大部分时间花在打开并读取json文件上了,查了很多资料,也浏览了学友们的作业,怎么试都不行。我也曾怀疑文件是空的,但是Windows无法直接打开,我又不知道也没想到用vscode就能打开json文件,结果文件果然是空的,我却以为是出错了,白费了很多功夫。经教练指点,终于顺利完成作业。感悟:对行家来说的常识,往往却是新手凭一己之力无法逾越的坎儿。这个好像不好补~

Day10作业耗时最多的地方其实是上一次隐藏的一个bug,只不过没影响到结果,所以没有发现。上次替换无用字符的时候,对于数字字符,想要进行统一处理,用这样的语句 if text[i] in range(1, 321) 跳过,不加到字典里。

今天采取同样的方法,没有得到预期效果,很纳闷,调好了很久,终于发现症结,其实文档里面的数字都被识别为字符了,那句代码根本没起作用。最后,还是老老实实继续用很笨的方式解决问题。

消化这本书感觉就像探索社会主义道路一样曲折,前进中还会有反复、还会有倒退。分明看的时候好像都懂了,但是走着走着,知识点之间串联不起来了,因此举步维艰,感觉只是把眼前的文字识别出来毫无意义,就只好从头来过。但是,仅靠眼睛形成的记忆是靠不住的,反复忘,太不牢固。直到开始用纸笔做笔记,之前与之擦肩而过的、想当然的一些知识点终于理解到位了。虽然只是把书上的很多内容抄到本子上,但是这个过程就是很神奇,收获的是仅靠阅读无法达到的高度。

生活场景拓展

从Day11开始用真实场景演练了,之前只是人造应用场景。这两天的作业主题选取的是用机器人管理微信消息的应用场景,不能再贴近生活了!就像在试卷上答题和将所学应用于实践解决实际生活问题的区别一样,难度不是一个数量级了。如果没有作业单上的代码示例,只看文档是没法完成任务的,网上也很难找到合适的例子。

DAY12作业虽然已经提交,但是还有点疑惑。感觉实践作业不像之前的基础作业,做完了确实就知道是怎么回事儿了。实践作业如果没有参考根本完成不了。在一个项目文件里搜寻所需的零散信息,然后拼装起来实现一个完整而具体的功能,又一次手足无措。我们缺失的是什么,如何弥补呢?全面阅读文档,归纳、总结、融会贯通的能力不是一朝一夕练就的,但只要坚持、反复实践,总有功成的一天。

Day13作业又拖了好久,也没刻意计时。多多少少心里有点抵触情绪,感觉怎么看文档都只是一知半解,不如前面的基础作业有成就感,所以积极性不高。

最终下定决心照着教程把代码敲出来,因为之前看过文档,多少理解了一些,再自己敲一遍确实比只用眼睛看理解更深刻了。还有些不够明朗的细节留着以后慢慢消化吧。

由图例到实地

曾经,我也是个“弄潮儿”,看不上的老师,怕被误导,上课睡觉,下课自学,成绩也还不错。所以,我以为自己很擅长自学并引以为豪,直到见识了自学高手的境界,才意识到自己所谓的“自学”只不过是很初级的阶段,前方还有很长的路要走,我却以为已经到达目的地了。这认知简直太误人了。

14天的训练营虽然要告一段落了,但这只是个起点,才刚刚学会看图例而已,千里之行只迈出了第一步。下一步继续研读《自学是门手艺》,随时查阅官方文档,进行关键知识点的总结、归纳、整理、组织,不断完善更新,直至刻在脑子里。同时不间断地练手,必须学以致用,否则只能永远停留在纸上谈兵的水平。

实地考察更有趣、更挑战、更刺激。手握地图,至少不会误入歧途。再出发,已经不是独自开荒了。路径清晰、路标醒目,就连远处的风景都依稀可见……

如果说用代码实现一个计算器、一个九九乘法表什么的,对我们的生活改观并不大,那么写段代码管理微信消息,是一件多么高大上又体面的事情啊!微信几乎是每个人生活的一部分,不难想象,精通Python将如何改善我们的日常生活……用个不那么恰当的比喻:手里拿着锤子的人,看什么都是钉子。掌握一项技能就是拥有一种工具,用得顺手了,就停不下来了……期待那一天早早到来!