慕课网的教程看完了,上面的习题也都能写出来,但是让我自己做个什么东西,还是毫无头绪,听说学习编程的唯一方法就是编程,那我现在编不出来,抄人家博客上的代码能不能学会点?
ps:现在正在抄一个百度贴吧爬虫的代码。
回复内容:
做了一桌子菜,但都是买现成的熟食,你所做的工作只是切切装到盘子里。每一个import模块都相当于一块熟牛肉,但真不能当成我们自己做的。
先声明,我也是刚接触不久,以下仅是根据个人经验提出的看法
学编程,第一法则是要懒
怎么个“懒”法?比如我,每天都要上学校网站登录帐号才能上网,不登陆也要上去看看还有多少流量。但是我不想每天都要为这个重复下面一系列动作:
打开手机/电脑——>浏览器——>学校官网——>网关——>输入帐号登录
这些动作对于我来说毫无意义且繁琐,所以我想试着写一个程序替我做了,刚好最近学了Python和爬虫,于是就开始做起来
哎呀,竟然有一个urllib和urllib2库
哎呀,这样就可以POST数据了
哎呀,可以伪装成浏览器唉
你看,写着写着就会了
我是自学的php,1个月的时候想写个留言板,写不出,于是百度了个简单的留言板源码,一边看一边写。
2个月的时候把那个留言板改成了博客,隔几天加个功能,隔几天加个功能,然后就找到工作了,现在在开发crm。
刚开始都这样,就像茶壶煮饺子,有嘴倒不出,主要就是没有头绪,只要理清楚第一步干嘛,第二步干嘛,就能想做啥就做啥了。
不邀自答.
零基本或者更多没有太多编写完整项目经验的同学, 在初步了解了Python基本语法之后,
可以通过以下方法深入学习:
- 写爬虫, 学习Scrapy框架(难度两颗星)
- 建网站或者建立博客, 学习Django框架, 熟悉后转flask框架(难度三颗星)
- 学习numpy等包, 用python做科学计算或者数据挖掘等(难度四颗星, 需要一定科研精神)
- 查看Github上Python项目, 看项目源码, 给项目写issue->做测试->写文档->改Bug->加功能(难度五颗星)
我认为学习一门语言, 首先应该通过网络渠道或者实体书渠道, 做一个完整的小项目(不需要太大).
然后推荐两个自己以前学习专栏(掩面, 逃..):
- 钟爱Python - 文集 学习爬虫系列专题
- Django之歌 - 文集 学习Django专题, 最后可以建立一个完整的博客.
最后祝好运!
学一种程序语言,最好的情况就是带着需求去学习。题主的情况应该是学习的过程中仅仅是看懂,而没有加入对如何应用的思考,所以学得不会很扎实,用的时候定位不到对应的知识。
我学习编程的经验是定一个大目标,比如完成一个自己的爬虫,或者完成一个购物网站的推荐算法等等,结合需求去学习,这样你目标完成之日就是大功告成之时。
另外推荐英文原版的学习资料。
希望有所帮助
或许题主是不知道应该做什么。
特别是编程语言一般都对底层功能做了不同程度的封装来简化开发,而使用封装就意味着要使用库,使用库就意味着要先知道有什么库。Python是比C/C++更为抽象的语言,没有库寸步难行。
但也不是说要把所有常用库一个一个学起来。
一般的做法是挑一个自己想要的功能,然后设法去实现。这个功能可大可小。然后逐渐往上加功能,自己要什么功能就去学相关的知识。
我最早开发的网络爬虫是一个漫画下载器(IFComicDownloader),用C++和Windows的SDK写的。后来为了简化网络(主要是那些检测reference防外链的网站)通信使用了Libcurl,为了便捷添加和修改支持的网站使用了LUA,为了自动更新抓取网页的脚本而找了个免费的服务器,为了持久保存数据使用了sqlite数据库。昨晚我还修改了一个脚本来绕过某漫画网站的工口物屏蔽(……)。所以说没有需求就没有学习的方向。
题主说正在抄百度贴吧爬虫代码。按我的观点,照抄代码的缺点在于只能知其然很难知其所以然(为什么这里要用list,为什么那边要用lambda之类的)。这可能导致以后有了需求也想不到怎么处理。而自己有需求的话,带着问题去找代码抄,就可以避免这个问题。
与其是抄百度贴吧爬虫代码,不如先想想自己觉得爬虫需要什么功能,然后主动去找资料。先从简单的开始,比如输入一个帖子的URL,下载一个帖子的所有回复(和楼中楼)到文本文件。然后需求自然会慢慢冒出来的。比如如何绕过百度的“非百度用户无法查看图片”,如何方便地统计帖子里最活跃的用户等等。后来可能演变成统计哪几个用户彼此关注,然后搞出一个百度贴吧用户关联图。要分析哪几个用户是某ID的小号,或者是广告号,然后没准就会去学习numpy玩大数据统计了。
能学会编程语言的人很多,用它来做数学题的很多,但是有用它来创造产品的人很少,因为大多数人对没有做过的事都不知如何下手。所以我认为正确的做法是:
1、明确自己要做个什么东西,具有哪些功能。
2、想清楚实现这些功能需要用到哪些技术。
3、将整个软件功能细分,再进行步骤细分模块。
4、编码实现每个功能的每个模块提供接口并进行调试。
5、整合接入功能模块并整体调试完成开发。
大二狗,自己做东西时无意总结出来的方法,慎用。
慕课网。。这帮人就没打算教你学会编程啊 你当然学不会啦。。
An Introduction to Interactive Programming in Python
公开课很棒,每讲一点会让你做个小游戏,很简单,但是用来入门熟悉和培养编程习惯刚刚好,很有意思,强烈推荐楼主看看,
同在学,可以交流
先找点习题做做
再找点项目做做。
你的原因是:没有编程思路。
请看黄哥本人写的文章
如何捅破python编程的那层纸
https://github.com/pythonpeixun/article/blob/master/pythonstudy.md剪刀石头布小习题三种语言python2、php、go代码
https://github.com/pythonpeixun/article/blob/master/jdstb.md一段小代码说明@property装饰器的用法
一段小代码说明@property装饰器的用法