GitChat·Python | 零基础小白如何入门 Python 编程

背景

引子

我们来探讨的问题是 —— 如何从零开始学习python。

如何教不是我发一教材,然后让大家顺着开始学不是我们先进行一些理论学习,视频授课/p>

我分析了一下情况,发现以下几个比较有意思的点:

  1. 来学习的人之中有 70%是女生。

  2. 学生党和工作党的比例是 3:2。

  3. 绝大部分人一天只能抽出1~2个小时学习(非脱产)。

  4. 基础几乎都没有。

无疑这是一个极大的挑战,下面我就来讲一下如何教学。

学编程从理论还是从训练开始/h3>

这个问题让我回想到了自己的科班的学习过程,有这样一个故事给大家分享:

“2012年,过年回家的火车上,我提着行李走上了拥挤的车厢,对面的小哥顶着蓬松的头发,我知道,这也许是我的同行。24小时的上海到贵州的旅程就没那么孤单,因为我们都在讨论架构、算法、编程学习…这个工作了5 年的前辈给我的建议是,你现在看这个架构、编程理论等书籍,不求甚解即可,等你有了大把经验,回来很快就能秒懂。

时间过去了2年,两年中我也没有看任务关于python的书籍,不过用它写了七七八八不下几万行脚本解决各种问题。有一些我在图书馆等人,随手翻看了一本《Python cookbook》,是一本500+页的大部头书,我就那么一页页翻看,等的人到了,我也看完了。

请问,我等了多久/p>

答案是:两个小时”。

这个故事让我思考了学习的两种不同的模式。

学习的模式 — 创造还是模仿

先给大家看两个学习者:

  1. 想要通过学习python编程完成一个自己的个人 站。

  2. 想要通过学习python,对比python和其他脚本编程语言的设计优劣,然后改进之。

显然这两个人的学习方式势必是不一样的。

第一个人的学习重点在于 —— 模仿,这将是大多数程序员所做的工作,在这个阶段,不要说编程是创造性的工作,顶多能说编程是一个有逻辑性的工作,模仿就可以了。

第二个人,显然是一个编程科学家,北美的高校有一个研究方向叫做 programming language,我有几个过去的同学都读了这个专业的博士,还有我们著名的编程届 红“王垠”同学也是读的这个专业,这个专业的使命是什么—— “创造一门编程语言” or “改进现有的编程语言”,他们的工作,模仿是远远不够的,需要了解整个理论体系、设计原则、处理细节等等…他们不能靠模仿来学习,因为没有什么可以模仿。

而学习编程最大的悲剧 —— 就是明明自己的目的是模仿逐步形成自己的技能,而误以为自己要去创造新事物。

所以学习编程之前需要搞懂 —— 做创造性的工作;还是做模仿性的工作。

创造性的工作举例:歌创作、生物学研究、新车设计、设计一门编程语言、设计一个新的web容器。

仿性的工作举例:读英文诗歌、播音工作、编程一个APP、驾车、游泳、吉他弹唱、跳交际舞、雕刻小人、书法…

可以看到我们很大一部分事情,都是模仿类型的工作,模仿类型的工作时不需要从理论开始的,而是从练习开始的。比如学习游泳,没有一个人是从看了一个月游泳的书籍开始的,而是教师在水下给你讲,你去模仿他的动作,然后给你纠正。比如学习英语,就不说了,这么多的人学习了十几年还不能用,就是缺乏练习。

而学习编程,还是教编程,大部分也是模仿式的学习,模仿式的学习就要从练习开始,或者以练习为主的训练开始,不然很可能浪费了大量的时间而没有看到成果而放弃。
(我们接触到的编程学习者这样的情况不在少数)

了解了这个道理,我们开展教学就容易多了,那就是本着一个原则 —— 一开始就模仿写代码。

开始学习

那么我们就要开始做真正的学习了,以下我以我自己设计的教学流程作为参考,指导一个零基础开始的教学过程。

从一个故事开始学习变量和判断

首先我们从一个老妈买菜的故事开始,第一周学习的内容是学习变量,可以看下面一张图,我们是如何教变量的,记住这个是第一天,第一天学习编程,就要开始写代码,这是我的教学过程要坚持的。不管写的多,写的少,都要开始模仿开始写。

需求是下图这样的:

可以注意到一点,我没有教大家学习 这些事什么意思,而是让大家开始模仿,大家都是成年人,都有悟性,不需要花费太多的时间去低效地学习理论,之后自然会明白。

上面这一段代码,看懂就可以了么/p>

不,我会要求我的学员自己在电脑上打一遍,真正他们打了过后,就会发现其实看懂是没有用的,因为他们会发生以下的问题。

  1. 跑代码前没有保存成.py的文件;

  2. if之后的符 用了中文的:(冒 )。

  3. 缩进写错了 indent error。

  4. True和False写成了 true 和 false。

  5. name 写成了 name

  6. 64位的系统装成了32位python,虽然已经提醒过。

  7. 变量名字之间用了空格, 错。
    ….

这些问题,不去实际写代码是发现不了的,但是好消息是,发现了一次,之后就基本不会再犯错了,所以我们说编程模仿练习的必要,以及编程中犯错 bug的必要。

如何学习列表

这里再举一个学习列表的例子,我们来看下面的代码:

相信大家已经看到了,这一段是说明列表为何要使用,学习的过程需要了解为什么要用列表,那就是 变量不够用了嘛。

我们看上述3个函数就能够明白,列表这个数据结构的演变过程,其实就是变量不够用了,要用一个更牛逼的结构来一次放很多个数据,这样理解起来会很自然。

相似的方法我用到了教授元祖、数组等等方面,你要如何学我给你的建议就是,用起来,用起来。

所有的 3 周的学习的代码在我的github上,都可以自取,当然我不可能在一篇文章里面全部讲完,你可以去 github 下载我们的代码记录,模仿。

一个月的碎片时间学习后,我们的学员可以完成以下的作业:

学员写来的部分邮件:

I really appreciate ShuShu’s coding class. It’s like he’s bringing a torch of enlightment to all of us “coding cavemen”.

My girlfriend who is the organizer of “R Girl” in Taiwan is doing almost the samething. We all belive girls can do coding as well as boys. Just, who is the first person to devote in girls’ education

Anyway, thanks a lot. Hope I can join in this class next time.

开始 名的时候想的是反正这一个月是毕业季也不用上课,只要把论文答辩搞好就没事了,还想着可以扩展一下自己的知识领域,我一个英专生脑子一热就 了编程班。结果真的是忙成狗,没打过n本论文的人都不好意思说自己要毕业,要准备答辩,还要帮着老师忙毕业季各种事情,更可怕的是我9月份还要考司法考试,真是在这个期间无数次想要放弃编程班的学习。。。但是我一直相信一句话,自己选的路,跪着也要走下去,所以呀,自己挖的坑不管怎样都要自己填平。好在不是每天都要交作业,只要有时间我就会听蜀黍的视频课,打个代码练习一下,想不明白就放在一边过一段时间再想想,在练习一下,实在跑不通就在群里问问小伙伴,于是,这一个月就这样跌跌撞撞走过来了,真的觉得坚持下来自己已经成功了!同时,感谢群里小伙伴和我的队友对我的帮助,耐心解答我的问题;也真的真的很感谢笃师的细致讲解,让抽象的编程知识变得通俗易懂;也觉得笃师真的很辛苦,每天那么忙还要深夜录制视频,保证第二天的推送,老师这么认真,作为学生也应该对自己负责,好好学习每天的知识。。。

个人感受

在大学期间,我只学习过简单的计算机入门,后来自己考了个office,基本就是考前刷了点题就通过了,但是这真的和编程有很大的不同。随着基础知识的不断深入,学习了更多的知识,我真的觉得编程是一个全新的世界。开始每次跑代码,发现错误就很慌张,为什么又bug了呢,觉得变成好麻烦,自己是不是学不会了呢,但是蜀黍一直强调学好编程就是一个不断debug的过程,于是我就每天接受自己各种花式 错的袭击,慢慢的自己的心态发生了转变,学会分析自己的错误,一点一点去改正,最后跑成功的喜悦真的难以形容。还记得画小乌龟的那节课,看着屏幕上的效果图,自己成就感十足;接触类的概念,我觉得编程不只是要一个解决问题的方法,更重要的是要一条通向成功的捷径,于是有了高度抽象化的概念;字典、元组、列表等等都使僵硬的数据变得有条理。一个月的编程课下来,我觉得自己具备了分析解决简单问题的能力,一步一步规划要实现的内容,而不再只是看到需求背景就很慌张不知道怎么解决,这就是最大的进步。

课程建议

建议在基础知识讲完之后,s2班级可以有不同笃师交替进行授课讲解,这样也可以分担蜀黍的教学任
务,同时学生也能够体会不同程序员的编程思路。

不足反思

在这一个月的学习当中,我发现自己举一反三的能力还有待提升加强,可能也是练习不够,同样的函数换了个小背景,就要想好久才能写出代码;同时,我的复盘只是自己回顾了一下每周学到的知识,但是如果能够讲给另一个人听我觉得效果会更好,让别人能够听懂自己才是真的明白了学到的知识;没有系统总结自己的错误,有的时候犯过的错误会在下一次又不经意的出现,今后的学习应当多思考不要再重复自己的错误。

学习感悟

历时一个月左右的编程班很快就结束了,在这一阶段基本把python的基础内容学习了一遍,虽不能说完全精通,但也至少在我的脑海中留有印象,至少在蜀黍的指导下能够输出一些代码,做些任务。从“一窍不通”到“入门”(算入门了吧),学习了不少,起初自己也想学点编程,后来总是不了了之,这次跟着蜀黍和大家坚持下来,还是蛮开心的。

但是,在日常的练习中,自己思考还是比较少,有所欠缺,常常跟着蜀黍的思路走,所以自己独立思考解决问题还是比较少,可能自己练得太少,所以在写大作业的时候基本没什么思路,需要借助蜀黍的指点,才能完成作业(唉= =#看来学习能力不够强,还要多多锻炼,多多敲代码)。

在最近的一段学习时间中,由于一段时间处于考试周,学习断断续续的,投入的时间并不是很多,经常以完成任务就结束了(不应该啊),而且群里讨论参与度也比较少,平时阅读也比较少(敲脑袋,要反省)。

课程体验

  1. 蜀黍备课详细,解释地道,通俗易懂。

  2. 任务合理,基本能够按要求完成。

  3. 很适合这种非专业、零基础的学员。

  4. 群里的成员积极讨论,能够很好帮助大家解决问题,同时还有问题集锦,有助于复习。

下期计划

继续跟着蜀黍学习,哈哈

  1. 反复学习蜀黍的学习资料。

  2. 认真完成每天的作业。

  3. 认真做总结,和同伴交流。

  4. 学有余力,多阅读相关材料、 站等。

  5. 多敲代码,多敲代码,多敲代码。

无论如何,基于自己的兴趣 了编程班(应该不会产生厌学情绪吧),希望在编程班中和大家一起学习,掌握一门技术(技多不压身,哈哈),学以致用嘛!

更多的内容将在chat里面提供。

后话

Talk is cheap, show me your code.

练习在编程入门的过程中,的确是最重要的,希望看了这一篇文章的同学,如果有对于编程学习的想法,一定不要止于看书、止于假学习,这个技能,是一行一行敲出来的。

共勉。


实录:《郭意亮: Python 编程入门实战解析》


这里写图片描述

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览208568 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年7月20日
下一篇 2017年7月20日

相关推荐