打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何处理 Python 入门难以进步的现象?

问题描述:

看视频看呀看呀看, 看完了,基础的都懂了 然后就想写点东西 可是无从下手呀,我以为基础不扎实,又去看视频 好了 视频看完了 想网上找点习题来做,结果简单的习题做不出来,又怀疑基础没学好呀 又看视频和网上的文章 如此的循环着 学习有一个月了 我困惑的是,很难把知识点结合起来写个简单的东西 比如说目录遍历都写不出来 我知道站在岸上学不会游泳 你们可能会叫我多练 , 可是我想知道怎么去练 如何练 不能没有目的的去练, 其实我PHP也是如此的,能看懂代码就是难下笔 一身劲,不知如何用……

下面我们来看3位前辈的回答。

1

你的学习顺序反了,这当然容易陷入到迷惘之中。

我们都经过了大量的学习,才混到今天。但是我国的学校教育,可能给了很多人误导,让人丧失了自我学习的能力。

其实编程是一个超级实践课程。看书是不够的,做例子是不够的,做习题也是不够的。因为书、例子、习题都不能涵盖你未来需要的所有技能。同时,你的目标不是考试得到一个好的成绩,不是game the system,而是学会一种技能。

所以,你的学习方法错了。

我一向建议所有的初学者,所有的自学者。在学会任何一点基础知识的时候,就开始实践。从实践出发,用实践牵引你学习。

比如,你现在开始学习文件系统和目录了,那好,你可以设计一个小项目给自己。比如,在你自己的硬盘里面遍历,找出所有的mp3/wav文件,算算空间占用,等等。

在做这个小项目的时候,你会发现很多书里面不见得告诉你的知识,你也有可能发现无数种做法。

再比如,你学习到了urllib2的时候,你就应该考虑怎么做一个爬虫项目。

Python是一种非常顺手的,高效率开发的语言。用来做各种各样的好玩的工具都是可以的。看你有没有想法去做了。

学习所有语言都应该这样。

这样学习你就不会说,等到遇到一个现实问题的时候,束手无措了。

从干中学,从学中干。

我不是Python专家,但是我用Python做过一些事情,为啥呢,顺手。

多年前,我一个朋友想到了一个玩法,他找到了一个巨大无比的人名库,几千万名字,他想按照这些人的google搜索数量排序,得到一个人名的热度信息,搞不定找到我。我帮他写了一个python程序,可以每3秒去google搜索一个人名(更频繁会引发google的防spam机制)。但是这样全部搜完要很久吧,拿3000万说要3年,30000000/(60*60*24/3)。然后我再帮他写了个程序把几千万的人名切成几十份,然后他去找朋友的机器来运行,凑了几十台机器,一个月不到就抓完了。一个最简单的分布式爬虫就做好了。

做这个之前,我其实对Python没啥了解的,就是估计Python做这个很顺手,比其他语言简单就用了Python,后来果然是,其实这代码也就10-20行的样子吧。

2

Python上手极为容易,但是进阶的人却很少。Python极为容易给人一种「好像什么都会了,但是真的写起来又感觉好像都不熟悉」的感觉。除了浮躁的风气以外,不得要领我觉得也是重要的一方面。如果你感觉自己入门了,但是难以进步,说明还有救。我的建议如下:

1. 临摹。

Github有非常多项目,我学习的路上曾经花了不少时间去临摹别人写代码的方式,就是看他们怎么设计一个项目,怎么表达关系,怎么调用。但是临摹不是忘却自己,而是在学习别人的时候保留自己的风格,取其精华,去其糟粕。

2. 造轮子。

举个例子,现在有不少的用markdown生成静态页面的工具,比如Pelican,Nikola,甚至 Flask作者写的Lektor。可能你会有自己对这种工具的理解,想做一个给自己用。那么不妨自己「造这么个轮子」,其实重要的是过程,造完或者造的中途你会知道它的缺点和弊端以及优势。

尤其是看过其他工具的代码,对比下就知道哪些地方做得不好。这个过程获得的提升很大。之前都是入门,等你自己真的完整的自己做一个,做一遍,你就会发现对这部分已经属于「精通」了,以后再做对应的技术选型就非常清楚其中的利弊了。甚至还能写一篇见解深刻的文章分享给别人,否者只能看别人的汾江。

3. 集百家之长。

多看别人写的博客,订阅列表。别人代码和理解也看了,你的代码也写了,你也有了自己对一些事情的看法,剩下的就是摸索一套自己写代码,设计项目,DEBUG和解决问题的「套路」。

最后,最重要的是,你对编程这件事有兴趣,有自我驱动力,也愿意花时间。

3

楼主的问题是很有代表性、几乎每个人初学编程都遇到过的大问题

有人聪明际遇好,学编程很快入了门,但更多的人只是学会了编程忘记了学习过程的艰辛和痛苦,所以才会不理解甚至嘲讽新手

实际上,目前编程学习过程中,有几个重要的问题是没有解决好的(这也恰恰是学校应该去做但是没做好的),所以才会出现题目描述的这种情况

一个新手,当然需要做项目、实践练习来掌握知识,但是做什么呢?新人是不知道的

有人会简单地用一句「这个熬不过去说明不适合做程序员」来回应这样的问题,但这种态度无助于解决实际问题

我来分享一下我对这个问题的长期思考和实践的结果,列举一下编程入门中的几大问题

________________________________________

1. 学不下去

如果学习资料内容安排不合理、有问题找不到人问,就常常会发生一点小错误(比如中文符号、资料错误、敲错字符)纠缠一个下午无法解决的情况,这样热情就慢慢被消磨了

有很多人学编程,但是中途放弃了,主要就是学习过程中一些难以自己解决的小坑导致的

实际上,根据我自己两年多的教学经验,即便是学生使用精心准备的学习材料,依然会有一些问题需要解决(比如漏看了资料、敲错了字符、对知识的理解不到位),当然更好的资料意味着更少的问题

我班上的学生中,那些学习过程中提问更多更好的人,往往能学得更好

所以如果你有一个好的学习环境,比如有同学、助教、老师、朋友可以讨论、多问问题,那无疑扫平了很大的潜在障碍,效果会事半功倍

________________________________________

2. 学完了发现还是不会 / 全忘记了

也许你听过短期记忆和长期记忆的说法,虽然我不是这方面的专家,但其中一些解释应该能帮你更好理解学习和训练之间的联系

短期记忆的特征是,能迅速将一段少量信息短时间内储存在你的头脑中,过一段时间或者转移注意力以后就会很快遗忘掉

长期记忆则相反,需要满足一定条件才能形成,但能储存更复杂的信息,并且不容易遗忘

而学习的目的,可以说是将特定的知识、技能、过程形成长期记忆

学了就忘,应该是很多人体验过的事情,其实就可以被理解为尝试形成长期记忆但失败了

那么如何形成长期记忆呢?主要有两个要点:

创造更多的意义(和外界、自己旧有知识技能的连接)、更多的重复

更好的训练过程能做到这两点,一系列针对性的训练提供了多种运用新知识技能的场景,让你在反复操练中了解如何灵活运用知识技能

所以想要学好编程,最好能够有配合学习资料的针对性练习,并且在学习后第一时间反复练习,最终能够把学习的内容掌握得更牢固

想想高考,不刷题是不可能的,但是刷什么题、怎么刷,就是教学质量问题了,大家都会认可重点高中会有更好的教学质量

________________________________________

3. 该学的都学会了,但依然只会敲几行代码,根本不知道怎么做出能用的程序

这个问题,也就是楼主遇到的问题,实际上这个问题即便在国内外大学科班中也是非常常见的

通常的编程教程和教材,更多的是起到一个字典或者手册的功能,只能教会你基本语法

这样就会导致学完后陷入一个迷茫、不知道自己该干啥、能干啥的状态,最终难以更进一步(这个在网上是一个很常见的问题,不知道可以做什么)

这个问题的解决方案说起来也简单,多做些实际项目就可以了(但比较遗憾的是市面上这方面的材料是缺失的,通常这一步是靠自己花时间磨过去的)

你需要的是可以指导你的伙伴、朋友或者老师,帮助你完成一系列的实践项目(这也正是学校的作用不是吗),要么就自己熬时间熬过去,熬得心灰意冷就算是失败了

________________________________________

不仅是学 Python,学其他语言、技术、原理,也是同一个原理

好的学习环境要有良好的教学材料、问题解答和指导、针对性的作业训练、理论联系实践的练习项目等等

虽说很多人认为一定要靠自学才是好的,但实际上也都会想要买学区房移民北上广、拥有更好的教育资源

所以学编程也一样,参考以上的几点问题,如果你能解决以上几点问题,那就能高效高质量地学好编程

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
跟着数百万人编程导师学C语言!
想用Python学机器学习?Google大神替你写好了编程示范代码
Python从入门到实战,拥有这三本书很有必要
新手学Python,4周从入门到实战,深入浅出学习路径
有了这十五款编程游戏,谁都可以学编程!(建议收藏)
Python初学者必读丨五分钟内教你如何学习Python
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服