学员信息
- 学号:1901020029
- 学习内容:Python 14天入门
- 学习用时:50小时
编程训练营学习感悟和心得
14天的编程训练营迎来了尾声,回顾这14天的经历,可以用难熬来形容,从报名入营时的满心期待、到提前做准备在开营前快速通读《自学是门手艺》给自己减压、再到开营第一天完成各项任务用时5个多小时差点崩溃、又经历周末带娃根本没时间、娃生病发烧折腾一整夜身心俱疲,可是这一切困难最终都被战胜了,这14天的时间被化作完成的每一项任务成为陪伴自己的朋友。
我想能完成任务的一个很重要因素归功于笑来老师说的:给自己做心理建设很重要。别怕,千万别怕。
这14天我反复在想,编程零基础的人不可能14天就学会编程,那这14天的训练营目的到底何在,就像笑来老师说的,若不是这么多年一直看着他一步步做到,自己又怎么会一看到训练营的消息,不做停留的就付费参与,参与之后又从中学到了什么呢?
首先,编程是门语言,是写给机器读取的语言,机器读取人下达的指令(程序),然后帮助人完成各项重复的工作,节省时间,提高效率。
这14天训练营的安排就是从python程序能实现的最小的那项任务开始,我们实现了在屏幕上打印出“hello world!”、写出一个最简单功能的计算器、运行九九乘法表、理解数据容器的概念、编写函数实现统计词频的功能、学会调用自己编写的函数、为函数添加参数类型检查以便捕获异常、了解标准库的功能、了解第三方库的功能、还进行了三天的实战演习,在微信上实现通过网络请求抓取网页内容,并对内容进行词频分析,将结果发送给指定邮箱,还可以将抓取内容词频分析后的结果生成图表回复给某人。
其实这是在最短的时间内,让我们对编程的每一个最基础的底层概念有一个最直观的体会,知道它能干什么,而为了知道这一点,你就得想尽各种办法让布置的任务能够达成,让程序在自己的终端运行,看看它到底长什么样。说句心里话,过程真心不容易。
前两天的任务还可以直接在网上搜索到代码,将现成的代码敲入自己的计算机,看看它实现出来的样子,可后面的任务便是层层嵌套,功能越来越复杂,这里面最重要的是解题思路,可是发现看完每天的参考资料后,自己一点思路都没有,怎么办?于是我开始参考同学的作业,很庆幸自己是第2期学员,第1期学员早三天已经开始学习之旅,于是第1期学员提交的作业成为了我的重要参考资料,把每一位学员的作业都翻一遍,尝试理解其中的解题思路,从中参考自己能看的懂的代码,思路清晰的作业,敲进自己的机器,看是否能够运行,出现了什么问题,再google解决。这个过程也克服了自己的抄袭心理,开始觉得自己这是抄作业,在偷懒,可是后来我认识到,时间有限,把别人写好的代码敲一遍,自己理顺思路,能让程序成功运行也是一种学习,于是靠着参考别的学员的作业,我才完成了14天的任务,在此感谢每一位被我参考借鉴过的同学。
对于其中的向教练请教、和同学互动的环节,自己的感受真的是当被各种小问题卡住时,想向教练描述清楚自己的问题都很不容易,这些天开始习惯养成在github上看别的同学提出的问题,也看看其它同学的解答,理解学习是一种社交行为的具体路径。
还要特别感谢的一个人就是我的LG,我俩一起报名参加的训练营,被分在不同的班,最后三天的实战演练,就算是我借鉴1期同学的作业,也跑不出程序,其中一个很重要的原因是,之前完成的作业内部逻辑并没有理顺,很多参数设置的很乱,要不是和LG一起讨论,并在他的帮助下整理之前的作业内容,恐怕最后几天的作业就完不成了。
最后总结一下自己的收获:
1、不停的给自己做心理建设,相信自己能学会,编程就是一门手艺,相信自己花时间,肯定能学会,而且要在用中去学,这样可以极大的提高效率,因为它本身就是工具,多用才能熟能生巧。
2、编程入门学习最困难的就是对编程语言的基本概念的理解,还有理清这些基本概念之间的逻辑关系,而逻辑关系恰恰是自己的弱中之弱,这14天里能感受到自己回避困难的心态,这和自己在真实生活中遇到的很多情况都类似,刻意的回避最难的,通过训练营发现自己习惯性的弱点很重要,今后刻意练习的重点就是基本概念,以及概念之间的逻辑关系,告诉自己别回避,一天理解一点点,把时间当做朋友。
3、我理解的训练营的目的就是带着我们认识一遍python语言的学习地图,训练营的结营是自学编程的开始,以后自学python的过程中,遇到哪里不理解,就要靠自己去查找地图搞清楚了,加油吧!
王媛 写于2019年4月3日
以下为14天学习的具体细节:
day1:训练营第一天有种要崩溃的感觉,已经折腾快5个小时了,回想一步步的操作,还是把编程当成了洪水猛兽,大脑没有聚焦在完成任务,而是紧张的盯着参考资料,操作出现任何的不一样就慌的不行,自我感觉很多的能量用在了抵御害怕上。中间会厌烦,有时还会忘记google。耗费时间特别多的地方,在本地建立local.txt文档,直接存于本地库就自动变成.rtf格式,后来是用control+c、control+v解决了这个问题。
day2:配置本地运行开发环境 学习用时:3小时 收获总结: 1、任务1下载安装Anaconda无困难。 2、任务2在vscode中配置Python环境,阅读参考资料近1小时,感觉混乱,自己添加了几个python扩展。 3、任务3学习中不知道“打开mac终端”是啥意思,后学会三种打开终端的方法,通过Finder、Launchpad和右上角搜索框输入terminal达成。 遇到的难点与问题: 阅读参考资料时“过早引用”太多,经常就忘记了任务是啥,要练习以任务为导向的思维方式,避免陷入细节中。
day3: HelloPython 学习用时:2小时 收获总结: 从网上选择了两个简单的计算器代码,先敲代码,熟悉概念,执行过程中出错才会引发自己去思考错误在哪里。第一个简单的程序运行顺利,也大致理解了每句语言的意思。第二个相对复杂的代码出现了几十个错误,首先是print语句没有(),另外知道#后是注释,所以前两行没有敲在自己的程序中,结果导致程序里的中文无法运行,后来将这两行敲出 #!/usr/bin/python #– coding:UTF-8 – #set chinese code 终端中可以正常输出中文,但还是无法运行,有一个变量没有定义,暂时自己还不会解决,再研究参考资料,争取把这个程序跑出来。 经过教练的指导,将两处raw_input更改为input后,跑出了程序,很开心。
day4:控制流程 学习用时:2小时 收获总结: 1、通过编写程序运行九九乘法表,理解机器语言。 2、通读参考资料后,快速google现成的程序,从照着现成的程序敲出代码努力理解代码涵义做起,能成功跑出程序就鼓励自己,做到尽可能完成任务不焦虑。 3、理解同一项任务可以有多种解决方案,九九乘法表可以用for…in循环呈现,也可以用while循环呈现。 4、任务2在google搜不到现成代码,参考了同学的作业,将i+=1修改成i+=2成功实现,感觉到编程的神奇,也觉得同学解题非常智慧,不过这个答案没有体现任务中的在while循环中设置条件判断,继续努力寻找答题思路。 5、在while循环中加入if语句设置条件限制,实现了目标,不过偶数行显示的是空行,并没有被删除掉,不知算不算成功。
day5:数据容器 学习用时:5小时 收获总结: 大部分时间都在理解笑来老师书中给出的实例的代码涵义,感觉能看懂,但做任务却毫无思路,说明对于这些调用的函数,对其内部流程并没有真正掌握,后来为了完成任务,参考了其他同学的答案,照着敲函数由得出的结果去反着理解输入,理解编程语言的结构,今天做任务已经感觉很吃力。
day6:函数 学习用时:4小时 收获总结: 因为这些内容已经远超出了自己的理解范围,所以我选择先参考同学的作业,查看了很多同学提交的作业,能够读出各种解题思路的不同,有些答案看起来很费解,有些答案则条理很分明,选择了条理分明的答案,拷贝到自己的作业中,运行顺畅,然后自己按照代码重新敲一遍,加深理解,敲完代码后怎么都运行不出来,后来请教了教练,原来自己一个正则表达式少了个右方括号,自己还不太会读TERMINAL提示,教练告诉我要自己学会看提示,嗯嗯,一个小小的疏忽困了我好久,更糟糕的是我真的反反复复对照代码对了很多遍,就是没看出来,加上右括号后,代码成功运行。我觉得在自己毫无思路,或完全写不出的时候,照抄优秀代码也是很好的练习,从自己敲击的程序中,看到程序运行得出的结果,对于自己理解代码的含义很有帮助。
day7:模块 学习用时:4小时 收获总结: 理解每天的任务都是在前一天的基础上实现更大的功能,昨天通过函数实现了对文档英文单词词频的统计,对中文汉字字频的统计,今天在昨天已实现统计词频功能的py文档中,再定义一个函数,可以实现分别调用英文词频统计、中文字频统计,并合并输出的功能,生成模块main()。利用模块功能,通过导入模块,也就是自己编写好的统计词频、字频的函数,对其它参数进行程序运行。
day8:异常处理 学习用时:3小时 收获总结: 理解用try语句来对程序异常进行处理。各种试错,不明白为什么。对于函数的参数,运行流程还是不明白原理。先完成,在慢慢看书总结的过程中再努力去理解。
day9:标准库 学习用时:4小时 收获总结: 学习标准库中counter函数的使用,用来统计中英文词频,并学习读取.json文件,并统计其中的词频。被卡在找不到json文件处好久,后来将整个文件路径都写入程序,跑出了结果。
day10:第三方库 学习用时:3小时 收获总结: 学会在terminal下安装第三方库,每天的内容都是在前一天的基础上扩展,参考优秀学员代码,反复试错的情况下总能跑出结果,但还是不明白内部逻辑,继续读书理清底层概念。
day11:实战演练1 学习用时:3小时 收获总结: 今天卡在了模块调用路径上,总是显示import error,还不会解决。
day12:实战演练2 学习用时:4小时 收获总结: 利用wxpy模块,在微信上实现监听好友消息,并对分享类型的消息自动获取网页链接,用分词处理模块将处理结果返回给发信人。原来这就是一个可使用的服务,编程很神奇。
day13:实战演练3 学习用时:4小时 收获总结: 结合之前所学,将网络抓取数据进行词频分析,然后生成图表,参考同学作业,不采用之前的模块,一步步列出流程,可以生成图表,但是中文字体问题折腾很久也没解决。我调用昨天完成的函数,加入生成图表流程,程序没有报错,但不生成图表,没搞明白问题出在哪里。
day14:总结拓展 复盘生成前文学习感悟和心得,用时2小时。