python入门汇总

https://www.zhihu.com/question/20039623


知乎大神总结,如果从0开始


作者:code123
链接:https://www.zhihu.com/question/20039623/answer/64926634
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

零基础学编程,用python入门是个不错的选择,虽然国内基本上还是以c语言作为入门开发语言,但在国外,已经有比较多的学校使用python作为入门编程语言。

具体怎么选择你的第一门编程语言可以看下图:

<img src="https://pic3.zhimg.com/8160c14ea69b3a6674152f2c1ae6cd7a_b.jpg" data-rawwidth="2000" data-rawheight="2210" class="origin_image zh-lightbox-thumb" width="2000" data-original="https://pic3.zhimg.com/8160c14ea69b3a6674152f2c1ae6cd7a_r.jpg">

好吧,废话说完了,下面是正文,零基础怎么学习python。

========================正文分割线==========================

下面的内容是由浅入深,建议按照先后顺序阅读学习。

0.Python简明教程

下载地址:python简明教程中文.pdf

很简洁的一本教材,就算没有基础,你也可以像读小说一样,花半天时间就可以读完。

然后,下面这篇文章可以起到一个快速复习的作用:

分分钟学会一门语言之Python篇


1.Python 开发教程

廖学峰大大的Python教程,我见过的写得最好的Python开发教程之一,包括Python2.7和Python3两个大版本的教程。

地址:Python教程 - 廖雪峰的官方网站


2.学完基础知识,接下来就是掌握一个实用的开发框架进行实战了。

Python有很多Web开发框架,大而全的开发框架非Django莫属,用得也最广泛.有很多公司有使用Django框架,如搜狐,腾讯等。以简洁著称的web.py,flask都非常易于上手,以异步高性能著称的tornado,源代码写得美如画,知乎,Quora都在用。以下是Django框架很不错的学习资料。

2-1)Django基础教程

2-2)Django练手项目(使用Django开发博客):

3. Python实践项目
4. 其他一些比较有用的资源
如何入门 Python 爬虫? - 谢科的回答
Python正则表达式指南
【干货】Python爬虫/文本处理/科学计算/机器学习/数据挖掘兵器谱
Python WSGI详解

最后, http://www.the5fire.com/上也有很多好的学习资源.
一、说明

面对网络上纷繁复杂的资料,自己真是眼花缭乱,学的毫无章法,东一榔头西一棒子,这样不仅知识不能成为体系,自己的学习进度也不容易掌握,收效甚微。突然有个想法,就是把自己这几天收藏的资料整理出文章出来,方便自己有章可依,逐步走上python小牛的境界……

PS:附上一些python相关的好文:

1.萧大的编程入门指南

知乎获赞无数的编程指南,介绍的不光是一门语言的入门,也是关于编程的入门,谈到了作为一名程序员,应该掌握的一些计算机知识。

2. Python 编码风格指南中译版(Google SOC)

3. PythonTab中文网

------

二、Python社区

1. Python Tip社区

强烈推荐Python Tip,有刷题挑战赛,同时,也有很多在线教程!练手实操必备!

2. 啄木鸟社区

3. 编程指南社区Co

三、入门阶段

介绍一些入门的资料,对于有编程经验的同学来讲,入门资料学习并不是很费力。

1.简明教程

入门教程里,简明教程算是细节介绍相对详细的了,知识面也覆盖的挺全,入门资料的好选择。

2.笨办法学python

坚持看完了,尽管最后几章没去实现(主要是和我现在的需求不一致,不想花精力在那个上面)。有所收获吧,但是,确实是入门的,知识不全面,入门够用,风格特别,采用问答形式,学习过程挺有趣。

3.Python|Codecademy

在线挑战,还没用过,貌似现在对英文资料心里还有种抵触,必须克服!!!

4.实验楼python研发工程师

包含了Linux/Vim/Git/SQL/Python/Django/Flask等学习课程。

6.老齐的零基础学Python(第二版)

github版本,教程内容覆盖很全,也有实战项目介绍。

7.廖雪峰python2.7教程

现在已经有python3的教程了。

8.Vamei的的python快速教程

话说,我还加入了博主的粉丝群,后来加入了微信群,逗比一枚啊,现在好像去新加坡深造去了!博客文章还是很详细的~

总结到这儿我已经有乱花渐入迷人眼的感觉了!光是入门就这么多资料,看的过来吗?看完得到猴年马月啊!所以必须痛下决心,选择自己觉得好的就OK!青菜萝卜,各有所爱,别人觉得好的,可能在你这儿就是看着不舒服!好吧,自己就选择简明,笨办法,crossin,还有,codecademy!ok,暂时就这样了!

四、充实阶段

入门之后,对于这个语言的细节需要更进一步的了解,那么提升阶段必不可少。同时,对于计算机基础不好的同学,了解计算机及编程相关背景知识也很关键。

1.《Python基础教程》

根据自己学习javascript的经验,一本好的教材真是获益匪浅,它能让你明白很多底层的东西。比如红宝书《js高级程序设计》中关于闭包、原型链的讲解就非常详细!好吧,扯远了,因此,学习python也是一样,光是靠博客,在线文章是不能深入了解它的,选择一门经典教材是你深入了解一门语言的必经之路!当然,也有推荐《Python核心编程(第二版)》的,但是自己只买了《Python基础教程》因此,不做评价了,选中一本经典就可以了!何况自己离吃透它,还有很远的距离的!

2. MIT计算机科学及编程导论

3. Harvard:计算机科学cs50

2和3属于计算机入门课,之所以放到这儿,是因为介绍了计算机领域中相关的知识点,了解数据结构相关知识。其中,MIT的导论课老师的知识点是基于Python的,在学习时也能巩固Python。编程入门指南中强烈推荐的的两门公开课。(PS:网易真是良心,这两门课都有中英字幕的视频!)

4. Crossin教室

除了python教程之外,还有小程序,练手很好!在第一阶段入门之后,来这里做应用小程序,会找到成就感!除此之外,还有git等其他教程。是个不错的入门练手的地方。

五、升华阶段

有了扎实的基础,那么方向的选择显得尤为重要了。是数据分析,是web开发,还是游戏开发。下面暂时分为这三个方面整理一下:

5.1 数据分析

1. 《利用Python进行数据分析》

这本书是一本大而全的利用Python数据分析的书,数据分析入门肯定够够的,写的也很详细。书的作者就是开发了用于数据分析的著名开源Python库——pandas的作者!

2. scientific-python-lectures

英文资料,对Python数据分析中要用到的一些库,pandas,numpy,matplotlib等等做了简要介绍。Ipython Notebook形式的资料,示例代码都很全。

3. Matplotlib Tutorial(译)

Python制图的入门资料,强烈推荐!在线版的资料,作者排版也很舒服,示例代码也有,推荐!

4. 用Python做科学计算

最新发现的科学计算很棒的综合性教程,更新到这儿,需要的同学自取!强烈推荐!

5.2 web开发

1. 自强学堂Django基础教程

很详细的一个Django教程,作者很详细的介绍了每一步。有问题,作者回复也很详细,推荐!同时,自强学堂上也有很多其他教程,是个不错的网站,收藏!

2. Django搭建简易博客教程

建议和1结合看,1的介绍相对更详细一点。

3. 欢迎进入Flask大型教程项目

4. Flask指南

5.3 游戏开发

1. 用Python和Pygame写游戏-从入门到精通

六、 计算机素养

1.《深入理解计算机系统》

七、 Python面试题

1. 聊聊Python面试那些事儿


欢迎回访个人博客☺Python入门资料大全(更新ing)


-----------------------------------------------更新-----------------------------------------------

虽然我不是Python高手,但我是零基础,之前会的都是软件PS,PPT之类。
如果目的是想成为程序员,参考教学大纲。
如果只是学程序,理解科技,解决工作问题,我的方式可以参考使用:
1,找到合适的入门书籍,大致读一次,循环啊判断啊,常用类啊,搞懂(太难的跳过)
2,做些简单习题,字符串比较,读取日期之类 Python Cookbook不错(太难太无趣的,再次跳过,保持兴趣是最重要的,不会的以后可以再学)
3,加入Python讨论群,态度友好笑眯眯(很重要,这样高手才会耐心纠正你错误常识)。很多小问题,纠结许久,对方一句话点播思路,真的节约你很多时间。耐心指教我的好人,超级超级多谢。
4,解决自己电脑问题。比如下载美剧,零散下载了2,4,5,8集,而美剧共12集,怎样找出漏下的那几集?然后问题分解,1读取全部下载文件名,2提取集的数字,3数字排序和(1--12)对比,找出漏下的。
5,时刻记住目的,不是为了当程序员,是为了解决问题。比如,想偷懒抓网页内容,用urllib不行,用request也不行,才发现抓取内容涉及那么多方面(cookie,header,SSL,url,javascript等等),当然可以听人家劝,回去好好读书,从头读。
或者,不求效率,只求解决,用ie打开网页再另存为行不行?ie已经渲染过全部结果了。
问题变成:1--打开指定的10个网页(一行代码就行)。更复杂的想保存呢?利用已经存在的包,比如PAM30(我的是Python3),直接打开ie,用函数outHTML另存为文本,再用搜索函数(str搜索也行,re正则也行)找到数据。简单吧?而且代码超级短。
6,保持兴趣,用最简单的方式解决问题,什么底层驱动,各种交换,留给大牛去写吧。我们利用已经有的包完成。
7,耐心读文档,并且练习快速读文档。拿到新包,找到自己所需要的函数,是需要快速读一次的。这个不难,读函数名,大概能猜到是干嘛的,然后看看返回值,能判断是不是自己需要的。
8,写帮助文件和学习笔记,并发布共享。教别人的时候,其实你已经自己再次思考一次了。
我觉得学程序就像学英文,把高频率的词(循环,判断,常用包,常用函数)搞懂,就能拼装成自己想要的软件。
然后,stackoverflow.comGoogle.com 是很好用的。
然后,坚持下去~

6月10日补充------------------------------
一定要保持兴趣,太复杂的跳过,就像小学数学,小学英语,都是由简入深。
网络很平面,无数国际大牛著作好书,关于Python,算法,电脑,网络,或者程序员思路,或者商业思维(浪潮之巅是本好书)等等,还有国际名校的网络公开课(中英文字幕翻译完毕,观看不是难事),讲计算机,网络,安全,或者安卓系统,什么都有,只要能持续保持兴趣,一点点学习下去,不是难事。
所有天才程序员,都曾是儿童,回到儿童思维来理解和学习。觉得什么有趣,先学,不懂的,先放着,遇到问题再来学,效果更好。
唯一建议是,不要太贪心,耐心学好一门优雅的语言,再学其它。虽然Javascript做特效很炫,或提某问题时,有大牛建议,用Ruby来写更好之类,不要改方向。就像老笑话:“要学习递归,必须首先理解递归。”然后死循环一直下去。坚持学好一门语言,再研究其他。
即使一门语言,跟网络,数据库等等相关的部分,若都能学好,再学其他语言,是很快的事情。
另外就是,用学英文的耐心来学计算机,英文遇到不懂的词,抄下,查询。
python里,看到Http,查查定义,看到outHtml,查查定义,跟初学英语时候一样,不要直接猜意思,因为精确描述性定义,跟含糊自然语有区别的。而新人瞎猜,很容易错误理解,wiki,google很有用。

我还在使劲啃Python的路上~~ 一起加油:)

2012年8月26日补充线------------------------------------------------------------------
QQ群:22507237 陆续有些高手走了,也有新人加入。
另外 10月20日,上海有Python开发者大会,有空的孩子可以去。 pycon2012.51qiangzuo.com
给出2个截图吧,我最近做的,真的很烂,但是能用:)
这个是上次Python测试题目“从电商网站的搜索页中抓取制作商品图片墙”。我选了最最容易的静态网站。当然京东的抓取,比这种难。<img src="https://pic2.zhimg.com/6c36c5c65421e088fac5a373d3ccc095_b.jpg" data-rawwidth="1131" data-rawheight="555" class="origin_image zh-lightbox-thumb" width="1131" data-original="https://pic2.zhimg.com/6c36c5c65421e088fac5a373d3ccc095_r.jpg">这个很方便我自己每天查询,用Python3 + PyQt4,用“公司名字”关键词,在各个论坛,图片,视频,商场查询。每天看一次,很方便快速了解信息。
这个很方便我自己每天查询,用Python3 + PyQt4,用“公司名字”关键词,在各个论坛,图片,视频,商场查询。每天看一次,很方便快速了解信息。
<img src="https://pic2.zhimg.com/fa51cacc13a814e7f929457f191a4435_b.jpg" data-rawwidth="836" data-rawheight="274" class="origin_image zh-lightbox-thumb" width="836" data-original="https://pic2.zhimg.com/fa51cacc13a814e7f929457f191a4435_r.jpg">

先看:《简明 Python 教程》( book.douban.com/subject), 英文名《A Byte of Python》,现在有Python 3的版本(Introduction ยท A Byte of Python)了 。最简洁易懂的Python书了。

然后看:《"笨办法"学Python》("笨办法"学Python (豆瓣)),英文名《Learn Python the Hard Way...》,个人感觉是Python书籍中看起来最轻松的,他的习题非常好,初学者一定要练练:好遗憾我初学的时候没有看到它。

最后不用那么细的看:《Python学习手册》(Python学习手册(第4版) (豆瓣)),英文名《Learning Python》。这本书厚且有的地方翻译的比较难懂,啃起来有点累。当然,英语好的直接读原著最好了。这本书你真的掌握70%以上,在语言语法熟悉层面就够了用来工作的了。之后可以多看几遍巩固和掌握更多当时没懂或者忽略的内容。


接下来,在你不知道的方向的时候,一定先去看requests作者写的 The Hitchhiker’s Guide to Python!,这里面包含如下等方面 :

  1. Python 2 or Python 3
  2. 如何更好的代码,包含项目结构,代码风格,阅读优秀代码,文档化,测试等
  3. 明示网络应用,web应用,数据库等方面的主流库。
  4. 教你将自己的代码进行打包和分发。
  5. Python如何做环境部署。
  6. 给不同级别的学Python的开发者学习建议。比如 bitbucket.org/gregmalco, 目前看竟然没有人提这个项目,这才是新手初学Python,用来练习最好的项目啊。你要按照它的要求和提示,一步一步完成所有内容,有点闯关游戏的感觉。

接着可以参考 我的Python订阅列表,订阅一些你有兴趣的邮件列表和博客。


骚年,你已经开始Python之旅了。 接着就去 GitHub - vinta/awesome-python: A curated list of awesome Python frameworks, libraries, software and resources (中文地址是 GitHub - jobbole/awesome-python-cn: Python资源大全中文版,包括:Web框架、网络爬虫、模板引擎、数据库、数据可视化、图片处理等,由伯乐在线持续更新。)根据你的兴趣和工作需要找对应的项目了解和使用吧

欢迎关注本人的微信公众号获取更多Python相关的内容(也可以直接搜索「Python之美」):

weixin.qq.com/r/D0zH35L (二维码自动识别)

小白的Python入门教程:Python教程 - 廖雪峰的官方网站
从入门到精通,实战项目还带iOS App
附赠在线Python代码解释器,边学边在浏览器中敲代码
Udacity有一门课,cs101 "how to build a search engine"。总共7堂课,一天听一堂,一周就可以用python写出一个搜索引擎来。
不需要任何编程基础。

Learn Python The Hard Way

这是一本在线的书,简直就是给0基础的初学者量身定做的,从头开始一步一步跟着做吧。(我觉得Python简明教程比较旧了,这个很新)

英文版:learnpythonthehardway.org
中文版:笨办法学 Python (Learn Python The Hard Way)

此外有建议若干:
  1. 最好选个好用一点的Linux发行版,能省很多事。
  2. 你为什么选择Python?我自己回答:1 因为简单 2 因为拓展包多。由于第二点原因,建议一开始就熟悉一下使用easy_install pip什么的,请google一下 ez_setup.py。
  3. 编辑器&IDE :如果你在Windows上装好Python就有IDLE可以用了,此外强烈建议vim、emacs选一个学吧,gedit、sublime text什么的也好用的很,编辑器可以算一个独立的问题了,所以这里就不多说!其他编辑器跟IDE可以以后再说…。
  4. PyCon 的视频,很精彩,去看吧!
  5. 在Google+上关注一下Guido大神也是个不错的选择。
  6. 知乎、啄木鸟社区、StackOverFlow、python-cn邮件列表、等等等等好地方,去看吧!
  7. Learning Python 这本书是讲Python本身的,包括它的各种语法,这本书是为数不多讲Python3的,Core Python Programming个人感觉比较旧了,Python Cookbook是各种实战技巧,Programming Python 这本书两册,很厚,基本讲的是标准库,个人觉得可以忽略,直接看Python 的文档即可,Python in a Nutshell,可当工具书,Python简明教程 用来入门的确不错,Python 源码剖析 这本书分析的源码比较旧了,但是许多机制还是一样的,可以准备以后一读。
  8. Python Challenge,一个编程游戏,去玩吧。The Python Challenge
  9. 既然对编程没有任何基础,那先学一点C我觉得也是应该的。Learn C The Hard Way Learn C The Hard Way 还有这个:Linux C编程一站式学习 learn.akae.cn/media/ind,不是说必须得学C,但是学了会让你理解很多东西,绝对有益。
IDLE + 一本好书
<img src="https://pic1.zhimg.com/2c814862c6ec8ff748a849daa66c8978_b.png" data-rawwidth="671" data-rawheight="360" class="origin_image zh-lightbox-thumb" width="671" data-original="https://pic1.zhimg.com/2c814862c6ec8ff748a849daa66c8978_r.png">

Fluent Python

Python Playground

Introducing Python: Modern Computing in Simple Packages

python是很简单的 ,从《简明python教程》就很好入门(链接woodpecker.org.cn/abyte)。

可以试着直接做东西,web框架用Django, 非常简单, 这本书:djangobook.py3k.cn/2.0/

book.douban.com/subject绝对是本好书,就是高深了点。

开发社区可以为你解决很多问题: wiki.woodpecker.org.cn/,python的社区可是相当活跃。

对于编程没有任何基础,这个太可怕了。不知道从python这么简单的语言入手会不会对人的发展有什么影响。这个你可以请教一下真正的大牛~

零基础,请注意学习python编程,只学习语法,是很难学会编程的。
需要学习计算思维、解决问题的方法、编程思路。

不然只能看懂代码、但不能自己写代码解决问题。

建议看看黄哥的文章和视频。
请看黄哥本人写的文章

如何训练自己的编程思路
如何训练自己的编程思路 - 黄哥的文章 - 知乎专栏

如何捅破python编程的那层纸
article/pythonstudy.md at master · pythonpeixun/article · GitHub

剪刀石头布小习题三种语言python2、php、go代码
article/jdstb.md at master · pythonpeixun/article · GitHub
一段小代码说明@property装饰器的用法
一段小代码说明@property装饰器的用法


如何捅破python编程的那层纸之二
如何捅破python编程的那层纸之二

如何捅破python编程的那层纸之三
如何捅破python编程的那层纸之三



黄哥python远程视频培训班
article/index.md at master · pythonpeixun/article · GitHub

黄哥python培训试看视频播放地址
article/python_shiping.md at master · pythonpeixun/article · GitHub

黄哥python培训_python初学者的第一步
黄哥python培训_python初学者的第一步
要不试试这个?Python快速教程
这是原作者的一段自述:
我的朋友问我怎么能快速地掌握Python。 我想Python包含的内容很多,加上各种标准库,拓展库,乱花渐欲迷人眼,就想写一个快速的,类似于w3cschool风格的Python教程,一方面保持言语的简洁,另一方面循序渐进,尽量让没有背景的读者也可以从基础开始学习。另外,我在每一篇中专注于一个小的概念,希望可以让人在闲暇时很快读完。

学习python怎么选版本。目前Python有2.7和3.4两大版本,3不兼容2的代码,有点坑。。。

3代表着未来,但是现在比较流行的还是2,从各种支持和稳定性来说2比较好。推荐学2


入门方式一:

《像计算机科学家一样思考python.pdf》

评价:这本是我觉得写得最好的入门教材。

优点:不是仅仅教语言,还教编程思想,深入浅出。

缺点:英文的。。。中文版最近出了纸质的,但还没有电子版


入门方式二:

《简明Python教程.pdf》,英文名是《A Byte of Python》

评价:本书写得和Python一样,简洁优美,没废话。

优点:很干货,无废话,字字珠玑,都很实用的知识。

缺点:代码的字体显示有点问题,对照着英文版来看吧。没练习题

因此,想做练习:

方法一:上www.codecademy.com,学习python那个知识模块,全是练习为导向的穿插python知识。

方法二:学这本《笨办法学 Python(第四版).pdf》,也是以练习为导向,穿插知识点来教学的。

休闲无聊可看:

《Head_First_Python(中文版).pdf》这本以解决问题为导向进行教学,这种教学方法中国学生不太习惯,因为缺乏原理方面的解释。但是玩玩来看还是不错的,教你如何解决问题。

缺点:这本教的是python3。不过其实python2和3在初级阶段就几个语法有区别,大致类似的。


PS:

其实不用死磕一本,这几本穿插着看也行。比如那个学个几章节,再学这本的几章节当做复习。

Python | Codecademy
重点在按照要求练手。上手应该很快。

《阿里巴巴技术协会-Python与设计模式系列课程》10-20今日更新: 10、Python与设计模式--享元模式-博客-云栖社区-阿里云

11、Python与设计模式--桥梁模式-博客-云栖社区-阿里云

12、Python与设计模式--策略模式-博客-云栖社区-阿里云

13、Python与设计模式--责任链模式-博客-云栖社区-阿里云

14、Python与设计模式--命令模式-博客-云栖社区-阿里云

15、Python与设计模式--中介者模式-博客-云栖社区-阿里云

16、Python与设计模式--模板模式-博客-云栖社区-阿里云

17、Python与设计模式--迭代器模式-博客-云栖社区-阿里云

18、Python与设计模式--访问者模式-博客-云栖社区-阿里云

19、Python与设计模式--观察者模式-博客-云栖社区-阿里云

20、Python与设计模式--解释器模式-博客-云栖社区-阿里云

有关Python学习,小编在此将《阿里巴巴技术协会-Python与设计模式系列课程》 分享给各位同学,今日更新0-9: 0、Python与设计模式--前言-博客-云栖社区-阿里云

1、Python与设计模式--单例模式-博客-云栖社区-阿里云

2、Python与设计模式--工厂类相关模式-博客-云栖社区-阿里云

3、Python与设计模式--建造者模式-博客-云栖社区-阿里云

4、Python与设计模式--原型模式-博客-云栖社区-阿里云

5、Python与设计模式--代理模式-博客-云栖社区-阿里云

6、Python与设计模式--装饰器模式-博客-云栖社区-阿里云

7、Python与设计模式--适配器模式-博客-云栖社区-阿里云

8、Python与设计模式--门面模式-博客-云栖社区-阿里云

9、Python与设计模式--组合模式-博客-云栖社区-阿里云

这里有三个爬取实践内容推荐给楼主和各位小伙伴:

[python爬虫] Selenium定向爬取PubMed生物医学摘要信息

本文主要是自己的在线代码笔记。在生物医学本体Ontology构建过程中,我使用Selenium定向爬取生物医学PubMed数据库的内容。 PubMed是一个免费的搜寻引擎,提供生物医学方面的论文搜寻以及摘要。

[python爬虫] Selenium爬取新浪微博内容及用户信息

在进行自然语言处理、文本分类聚类、推荐系统、舆情分析等研究中,通常需要使用新浪微博的数据作为语料,这篇文章主要介绍如果使用Python和Selenium爬取自定义新浪微博语料。因为网上完整的语料比较少,而使用Selenium方法有点简单、速度也比较慢,但方法可行,同时能够输入验证码。希望文章对你有所帮助~

[python爬虫] Selenium定向爬取虎扑篮球海量精美图片

在进行自然语言处理、文本分类聚类、推荐系统、舆情分析等研究中,通常需要使用新浪微博的数据作为语料,这篇文章主要介绍如果使用Python和Selenium爬取自定义新浪微博语料。因为网上完整的语料比较少,而使用Selenium方法有点简单、速度也比较慢,但方法可行,同时能够输入验证码。希望文章对你有所帮助~ 此话题阿里云云栖社区已关注,后续持续更新中

作者:阿里云云栖社区 - 知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

亲们阿里云云栖社区已开通专栏,欢迎关注阅读:我是程序员 - 知乎专栏

去MOOC上课吧 Python交互式编程导论 An Introduction to Interactive Programming in Python Coursera
An Introduction to Interactive Programming in PythonPython交互式编程导论
我推荐一个叫codecademy的网站。它很适合零基础且学一点就想要得到鼓励的朋友。
Python | Codecademy
左边栏有相应的教程和题目。直接在右边练习。save&submit之后又是下一题。是不是有点像打游戏过关斩将?
<img src="https://pic2.zhimg.com/846dec72876e33964304324780470b11_b.jpg" data-rawwidth="1257" data-rawheight="622" class="origin_image zh-lightbox-thumb" width="1257" data-original="https://pic2.zhimg.com/846dec72876e33964304324780470b11_r.jpg">

本人才疏学浅,学识大多浅尝辄止,故文章若有错误,不论是文字笔误还是理解有错,烦请您留言以告知,本人必定感激不尽!

**Python分类下的系列文章,不断更新中,如果你迫不及待地想要看看写得如何可以先试试这篇[Python Algorithms - C4 Induction and Recursion and Reduction](hujiaweibujidao.github.io),如果觉得好久留言点个赞呗,如果觉得不好那就直接关掉这个博客网站吧,嘿嘿**

**[感谢@Google爱好者给该系列的命名,我很喜欢,叫做“码农与蛇的故事”]**

1.Python基础知识篇

[Python Basics](hujiaweibujidao.github.io) 和 [Python Advances](Python Advances)

前者是Python基础的简单总结(大部分摘自[网上恩师@廖雪峰老师的Python教程](liaoxuefeng.com/wiki/00)),后者推荐了些关于Python高级特性的好文章(大部分摘自[伯乐在线Python分类的文章](blog.jobbole.com/catego))

2.Python数据结构篇

数据结构篇主要是阅读[Problem Solving with Python](interactivepython.org/c) [该网址链接可能会比较慢]时写下的阅读记录,当然,也结合了部分[算法导论](en.wikipedia.org/wiki/I)中的内容,此外还有不少wikipedia上的内容,所以内容比较多,可能有点杂乱。这部分主要是介绍了如何使用Python实现常用的一些数据结构,例如堆栈、队列、二叉树等等,也有Python内置的数据结构性能的分析,同时还包括了搜索和排序(在算法设计篇中会有更加详细的介绍)的简单总结。每篇文章都有实现代码,内容比较多,简单算法一般是大致介绍下思想及算法流程,复杂的算法会给出各种图示和代码实现详细介绍。

**这一部分是下面算法设计篇的前篇,如果数据结构还不错的可以直接看算法设计篇,遇到问题可以回来看数据结构篇中的某个具体内容充电一下,我个人认为直接读算法设计篇比较好,因为大家时间也都比较宝贵,如果你会来读这些文章说明你肯定有一定基础了,后面的算法设计篇中更多的是思想,这里更多的是代码而已,嘿嘿。**

(1)[搜索](hujiaweibujidao.github.io)

简述顺序查找和二分查找,详述Hash查找(hash函数的设计以及如何避免冲突)

(2)[排序](hujiaweibujidao.github.io)

简述各种排序算法的思想以及它的图示和实现

(3)[数据结构](hujiaweibujidao.github.io)

简述Python内置数据结构的性能分析和实现常用的数据结构:栈、队列和二叉堆

(4)[树总结](hujiaweibujidao.github.io)

简述二叉树,详述二叉搜索树和AVL树的思想和实现

3.Python算法设计篇

<!--
**近期将会有重要变化,可以暂时不阅读该系列文章,待更新完毕再读应该会好些。**
-->

算法设计篇主要是阅读[Python Algorithms: Mastering Basic Algorithms in the Python Language](link.springer.com/book/)[**点击链接可进入Springer免费下载原书电子版**]之后写下的读书总结,原书大部分内容结合了经典书籍[算法导论](en.wikipedia.org/wiki/I),内容更加细致深入,主要是介绍了各种常用的算法设计思想,以及如何使用Python高效巧妙地实现这些算法,这里有别于前面的数据结构篇,部分算法例如排序就不会详细介绍它的实现细节,而是侧重于它内在的算法思想。这部分使用了一些与数据结构有关的第三方模块,因为这篇的重点是算法的思想以及实现,所以并没有去重新实现每个数据结构,但是在介绍算法的同时会分析Python内置数据结构以及第三方数据结构模块的优缺点,也就意味着该篇比前面都要难不少,但是我想我的介绍应该还算简单明了,因为我用的都是比较朴实的语言,并没有像算法导论一样列出一堆性质和定理,主要是对着某个问题一步步思考然后算法就出来了,嘿嘿,除此之外,里面还有很多关于python开发的内容,精彩真的不容错过!

这里每篇文章都有实现代码,但是代码我一般都不会分析,更多地是分析算法思想,所以内容都比较多,即便如此也没有包括原书对应章节的所有内容,因为内容实在太丰富了,所以我只是选择经典的算法实例来介绍算法核心思想,除此之外,还有不少内容是原书没有的,部分是来自算法导论,部分是来自我自己的感悟,嘻嘻。该篇对于大神们来说是小菜,请一笑而过,对于菜鸟们来说可能有点难啃,所以最适合的是和我水平差不多的,对各个算法都有所了解但是理解还不算深刻的半桶水的程序猿,嘿嘿。

本篇的顺序按照原书[Python Algorithms: Mastering Basic Algorithms in the Python Language](link.springer.com/book/)的章节来安排的(章节标题部分相同部分不同哟),为了节省时间以及保持原著的原滋原味,部分内容(一般是比较难以翻译和理解的内容)直接摘自原著英文内容。

**1.你也许觉得很多内容你都知道嘛,没有看的必要,其实如果是我的话我也会这么想,但是如果只是归纳一个算法有哪些步骤,那这个总结也就没有意义了,我觉得这个总结的亮点在于想办法说清楚一个算法是怎么想出来的,有哪些需要注意的,如何进行优化的等等,采用问答式的方式让读者和我一起来想出某个问题的解,每篇文章之后都还有一两道小题练手哟**

**2.你也许还会说算法导论不是既权威又全面么,基本上每个算法都还有详细的证明呢,读算法导论岂不更好些,当然,你如果想读算法导论的话我不拦着你,读完了感觉自己整个人都不好了别怪小弟没有提醒你哟,嘻嘻嘻,左一个性质右一个定理实在不适合算法科普的啦,没有多少人能够坚持读完的。但是码农与蛇的故事内容不多哟,呵呵呵**

**3.如果你细读本系列的话我保证你会有不少收获的,需要看算法导论哪个部分的地方我会给出提示的,嘿嘿。温馨提示,前面三节内容都是介绍基础知识,所以精彩内容从第4节开始哟,么么哒 O(∩_∩)O~**

(1)[Python Algorithms - C1 Introduction](hujiaweibujidao.github.io)

本节主要是对原书中的内容做些简单介绍,说明算法的重要性以及各章节的内容概要。

(2)[Python Algorithms - C2 The basics](hujiaweibujidao.github.io)

**本节主要介绍了三个内容:算法渐近运行时间的表示方法、六条算法性能评估的经验以及Python中树和图的实现方式。**

(3)[Python Algorithms - C3 Counting 101](hujiaweibujidao.github.io)

原书主要介绍了一些基础数学,例如排列组合以及递归循环等,但是本节只重点介绍计算算法的运行时间的三种方法

(4)[Python Algorithms - C4 Induction and Recursion and Reduction](hujiaweibujidao.github.io)

**本节主要介绍算法设计的三个核心知识:Induction(推导)、Recursion(递归)和Reduction(规约),这是原书的重点和难点部分**

(5)[Python Algorithms - C5 Traversal](hujiaweibujidao.github.io)

**本节主要介绍图的遍历算法BFS和DFS,以及对拓扑排序的另一种解法和寻找图的(强)连通分量的算法**

(6)[Python Algorithms - C6 Divide and Combine and Conquer](hujiaweibujidao.github.io)

**本节主要介绍分治法策略,提到了树形问题的平衡性以及基于分治策略的排序算法**

(7)[Python Algorithms - C7 Greedy](hujiaweibujidao.github.io)

**本节主要通过几个例子来介绍贪心策略,主要包括背包问题、哈夫曼编码和最小生成树等等**

(8)[Python Algorithms - C8 Dynamic Programming](hujiaweibujidao.github.io)

**本节主要结合一些经典的动规问题介绍动态规划的备忘录法和迭代法这两种实现方式,并对这两种方式进行对比**

(9)[Python Algorithms - C9 Graphs](hujiaweibujidao.github.io)

**本节主要介绍图算法中的各种最短路径算法,从不同的角度揭示它们的内核以及它们的异同**

大家回答得都很好,但还是那句话,我觉得要因人而已,还有就是想学哪方面的内容。

如果你是本科学生,你可能是想熟悉下Class、函数管理、调用,然后再熟悉下HTTP、TCP 等基本的网络,还有数据库、机器学习啥的。那么我觉得你可以看看下面的内容。




如果想学数据处理、机器学习

很多本科生现在都学这方面的内容了。但普通的机器学习已经做烂了,很多东西都已经做成傻瓜式了,做了也学不到什么东西。这样你可以做一个翻译软件。做翻译软件的好处是,你要对数据做一定的预处理,这样你会把numpy这些库玩的很熟练。然后可以玩下时间序列的神经网络学习,即使不知道原理,玩一下,对以后也是很有好处的。

尝试用TensorLayer做吧,它是基于Google TF 开发的适合研究使用的工业级库。。(有点绕口)github.com/zsdonghao/te

然后它有配套 TensorLayer 的翻译软件开发教程:Tutorial — TensorLayer 1.1 documentation

这个项目还是有点挑战性的。。。




如果是想学类抽象、网络、数据库

我建议你写一个聊天软件吧,只要在Terminal 上能让两台电脑通讯就行。telnet
我当时是用 MongoDB 做数据库,TCP 做通讯方法。GitHub - zsdonghao/ChatServerTCP: 保密型聊天软件服务器 /Private Chat Server

可能你会问为什么用 TCP 不用 HTTP, 那是因为HTTP 比较简单,但通讯速度慢,我当时是想如果未来需要做一些实时性强的应用,比如网络游戏。则肯定需要TCP了,需要各种握手、确认IP身份,等等。

但如果你不需要那么强的实时性,只是想练练手,你可以用 Flask ,这是一个很简单的 HTTP 库,5分钟能学会。




如果你只是想学类抽象

如果你只是想熟悉类抽象,想很好地记住它。我记得帝国理工以前教类抽象时, 是用国际象棋当作游戏的。但你可能会问,写一个界面也太麻烦了吧?其实当时学生不需要写界面,老师给一组下棋纪录给学生,学生让程序跟着跑,如果没有出错,就代表程序ok了。

这看起来不怎么帅,但这个作业确实能让你很好地了解类抽象。





如果想学爬虫、数据挖掘、数据库

建议写一个上海证监会公告爬虫,我以前写了一个放到github的,但朋友说要用,让我把它删了。。。 你可以每5分钟扫描以下网页,若有新公告发出,你就把pdf下载下来,然后把pdf文字提取出来,分开题目、发布时间等等,然后存在 MongoDB 里面。

然后再做一个搜索工具,比如输入一个关键字,把相关的公告自动找出来,把pdf源文复制到指定目录,等等。

很奇怪,零编程基础不是应该先从学习编程基础开始么,为什么大神们一上来就书籍选择,学习框架,系统安装呢?

1. 计算机是一个系统,即使只想撷取其中一叶,也至少需要对这片叶子周围的脉络熟悉一番。
想要开始学习Python,
__首先__,你需要对数据结构有概要性地认识,
__然后__,你需要了解一些算法基础,
__其次__,是面向对象编程的概要性认识,
__最后__,才是Python学习书籍、Python开发环境等。

2. 当然,如果能在类Unix操作系统下学习是最好不过,但是根据题意,我觉得这样单单说一句话是很不负责的,因为题主可能也不了解Unix。
想要在类Unix操作系统下开始学习Python,
__首先__,你需要了解Unix,
__然后__,你需要熟悉终端中使用Unix的基本操作和命令,
__其次__,你需要会使用Vim(或者Emacs),掌握常用快捷键,
__最后__,接续1)中步骤

推荐书籍:
Unix:[《Harley Hahn's Guide to Unix and Linux》](Unix&Linux大学教程 (豆瓣))
Python:[《Learning Python》](Python学习手册(第4版) (豆瓣))

——————
不是说支持Markdown么。。。

怎么样才能学好python, 怎么样才能学好django,怎么样才能学好编程?

虽然我还没有学好python和django,但是我想我找到了学习的方法。

动手!动手!动手!

对,就是三个动手,但是每个动手的含义是不一样的。

先来说说我的经历:

  • 从大二到研究生毕业,我用了5年的matlab
  • 从12年工作到现在,我用了4年的c#
  • 今年年初公司开始推行全栈,开始学习c++
  • 两三个月前,出于个人兴趣开始学习python和django

先别急着骂我好高骛远,同时学习好几门语言我也是被逼的!python和django才是我的真爱!
你们肯定以为我想说兴趣是最好的老师,NO!听我接着吹!

想当初~

学matlab是因为接了学校的一个自然科学基金,你懂的,通过了就有1000块钱拿。听到消息后,3个饿货就组团去报名了,过程是这样的:喜欢各种兼职各种发小广告的学渣室友找到了我,只是因为我大一在电脑城搞了一个暑假的兼职(对,就是修电脑),然后因为项目需要3到5个人就去找了一个天天打DOTA的东北哥们儿,只是因为这哥们只要名不要利,钱到手后他那块拿出来喝酒!妈蛋,现在回过头来想想,当初的奇葩组合竟然迎合了现如今最流行的商业模式:一个能搞项目的,带着一两个能干活的,还有十几个靠关系进来啥也不干就等分钱的!好吧,扯远了,最后项目也是如期完成了。怎么完成的?是我一个函数一个函数的百度回来的:matlab怎么加载图像,I = imread('image.png');matlab怎么得到图像大小,[M,N] = size(I);matlab怎么做循环:for i = 1 :m ... end。再到后来如法炮制,给另外两个同学写了毕业设计的程序,再再后来就当了枪手专业代写matlab图像处理程序,读研没拿家里一分钱还买了手机和笔记本。。。

c#学的也很奇葩。毕业之后阴差阳错的去做了桌面程序开发,当初都没听说过c#,还以为是叫c井呢。。。上来就扔到项目里去了:给你一个星期时间看书,一个星期之后开始修bug。。。好吧,看书,看的什么书?《c#高级编程》!对,没错,就是1557页的那本!哥们头两天还背着它公司宿舍来回跑,第三天就把它给拆了,把第一部分弄出来重新粘了个书皮。。。当然一个星期就连第一部分也没看完,反正就上去修bug了,还好流程控制语句跟matlab也差不多,还好哥们逻辑能力也锻炼出来了,扯着百度咱就开始风风火火的干了,任务也都能按时甚至提前完成。。。

三四年的工作经验之后,我知道了设计模式,知道了面向对象编程,知道了要提高代码的可读性,知道了代码简洁之道。

那么问题也来了,同志们!

从今年年初开始学习c++到现在,我看了好几本书,而且时间很充裕,我是很认真的在看。但是截止到今天为止,我还是不敢去接公司的c++项目!

两个月前,当我准备学习python和Django的时候,我习惯性的打开了知乎。想看看大牛们会推荐哪些入门书籍和教程。 分别搜索python和Django两个关键字,看到了很多我感兴趣的话题:
Python 的练手项目有哪些值得推荐?
python django学的很迷茫怎么办?
Python 应该怎么去练习和使用?
Python 学习完基础语法知识后,如何进一步提高?
Django 学习顺序及入门要求?
想用Django+ Bootstrap写一个网站, 有哪些比较系统完整的书或者视频可以参考?
学完python后,该如何开始django学习?
想学习Python Django,请推荐从入门到精通各个阶段的好书?

说实话我看完了这些问题的所有答案,答主们都很认真,让我对于这个自己不熟悉的领域有了简单的了解。

也是精心挑选吧,对于python,我选择了廖雪峰的官方网站这个教程;对于django,我选择了 Tango With Django。以这两个为主,当然还有其他的,head first啊,官方文档啊。。

当我利用下班后的空闲时间读完两个教程后,也确实不再是一头雾水了,这让我有了一点小小的成就感。感觉至少自己比身边的人多懂一些。但是短暂的喜悦过后我同样遇到了这样的问题:

python django学的很迷茫怎么办?

本人学生,零编程基础,在学习python的过程中越学越迷茫,感觉像无头苍蝇一样,来知乎取经,下面进入正题吧: 我是先看了中谷的python教学视频,然后跟着慕课网上的python教程把题目做了一遍,然后就开始看django,看了“django web开发指南”,又看“django官方文档”,在看django这两本书的时候简直是一头雾水,我有种感觉是python基础没学好的原因所以理解不了django,实在不知道在说什么,就照着书上的例子练,同时我也在网上找了好多blog应用的实例,想试着自己写一个blog网站,来增加一下对django的认识,才发现前端也需要学习,然后就在w3c上学基本的前端,发现前端要学一大堆,然后学着学着就迷茫了,最近一直很迷茫不知道自己该干什么,下一步该干什么,实在不想像无头苍蝇一样。

这哥们简直就是在说我嘛!

但是怎么办?我始终相信这句话:“临渊羡鱼,不如退而结网”。所以我不会因为迷茫而停止不前。

回想起自己刚开始用matlab做图像处理的时候,什么都不会就敢接活帮别人做毕设,现如今做了几年编程工作之后再学习新语言反倒是有点扭捏了!我在想什么呢?为啥就没了当年的锐气了呢?我在想面向对象,我在想代码规范,我在想怎么写高质量的代码。。

TMD,傻了吗,低质量的代码还写不出来呢,谈什么高质量啊!!!

所以,如果一个完全不懂编程的人和一个有若干年编程经验的人同时学python,我反倒会看好那个完全不懂编程的人!

哎呀,我这也算是顿悟了吗?哈哈。那就动手干起来吧!

这个时候当然还是要先问问自己这样的一个问题:

学会了Python你要用它干什么?学会了Django你要用它干什么?

我很清楚自己一直想搭一个博客,写博客的好处我就不多说了。如果你还没想到用python干什么,我建议先来搭个博客。这里当然说的是自己建站写博客,而不是在csdn什么的。为什么要自己建站?找工作的时候这可是看的见摸的着的项目经验啊,亲们。

有了目标就不要让手闲着,动手!动手!动手! 照着教程操作不是真正的动手,动手找方向,动手找解决办法,动手做,这才是真正的动手!动手!动手

我果断的跑到Github搜索了“django blog”,然后就自然而然的找到了zinnia。为什么用现有的框架?因为我给自己制定了这样的学习曲线:

  1. 用框架搭一个博客,博客上线,理解博客框架内部机制
  2. 用python写一个blog框架
  3. 读zinnia源码

当然这不是一个短期内能实现的目标,也许需要一年、两年甚至更多时间。但是一旦你开始动手了,你就会找到更细致的目标。比如,目前我的第一个目标完成了60%左右,我的博客已经上线了,在动手的过程中,我找到了更具体的方向,为了达成这个目标,下面的东西是我要学的:

  1. zinnia搭建博客,部署到阿里云ECS服务器--------------------已完成
  2. 掌握Git基本命令,用于版本控制和代码上传服务器----------已完成
  3. 入门python和django,基本概念和语法需要有------------已完成
  4. 掌握基本的linux命令,用于部署 ----------------------------已完成
  5. markdown,用于写博客 ------------------------------------已完成
  6. 理解web请求,MVC,MVT等blog框架内部机制 ------------未完成
  7. 其它网站建设技巧---------------------------------------------未完成
  8. 拥有一个微信公众号 ------------------------------------------未完成
  9. 待发掘 -------------------------------------------------------未完成

我是一边动手做,一边截图做记录以便写blog,这样速度至少慢了一半,但是很扎实。每一步我都可以回过头去看,为了让读者更好的理解我会重新组织语言、组织逻辑、看看是不是有几个步骤可以合并。。。

学而不思则罔 思而不学则殆!写博客让我做到了边学边思考。

我还申请了知乎专栏,因为是知乎开阔了我的视野,让我从“不知己不知”过渡到“知己不知”。

个人认为帮助你过渡到“知己不知”的人是最值得感谢的,想一想你要学习新的知识打开了搜索引擎却想不到用什么关键字,或者你压根不知道自己该学什么,无知是多么可怕啊!

这就是老话说的,“师傅领进门”。

希望我的一大通废话领你进门了,让你找到了学习的方法~

我会把所有的学习过程记录在这里,欢迎大家一起来讨论。如果你开始动手了却找不到下一步的方向,也欢迎来参考我的记录。

最后几句话与大家共勉:

  • 照着教程操作不是真正的动手,动手找方向,动手找解决办法,动手做,这才是真正的动手,动手,动手
  • 想一想自己是真正的有十年工作经验,还是一年的经验重复了九年!
  • 活到老,学到老。学到的不止是知识,进步让人身心愉悦,整个人都是正能量

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页