微信号:easypython

介绍:学不懂 Python 不是你的错,扔掉那些难懂的教材吧,我们用「说人话的 Python 分享」让零基础的你轻松上手 Python

学员分享 | “代码取代了我的重复劳动,1小时做完一上午的工作……”

2016-03-05 21:48 说人话的Python分享


0章 编程是什么

   

 0.0 写给“非程序员”们的一句话

   

编程只是手段,我们的注意力还是要放在提高工作和生活效率上。


 0.1 两条路

   

学任何东西都有两种方式,我称为大道和捷径


大道就像小说中的正派武功,武当长拳、少林金刚掌之类,入门缓慢。五年站桩,十年学拳,练到二十年上才能出师下山,学成后便成为江湖上的一等高手。


捷径就像小说中的邪派武功,九阴白骨爪、辟邪剑谱之属,上手极快,三天入门,五天学成,进入江湖后也能横扫一片,但是终究成不了一流高手,在跟正派的比武中很容易被一巴掌拍死。


对于编程来说,大道和捷径初期的学习都是一样的,毕竟想练剑的人都得先知道怎么拿剑。在初窥门径后,两者的区别就开始显现,大道开始研究多态、封装、异常,开始探究子类化列表、生成器和回溯,可以一行一行写出自己理解的代码;而捷径,只需要知道某行代码能实现什么功能,即仅知道how而不关心why,一行一行复制粘贴别人的代码,并稍作修改实现自己的功能。


对我来说,编程是实现我目的手段,我有我自己的领域,我并不想成为一个高超的程序员,所以我选择捷径的邪派。就像小说里说的,“能杀人的剑法,就是好剑法”或者说“不管黑猫白猫,抓住老鼠就是好猫”。


0.2 我为什么要学编程

   

作为一个非程序员,很多同事和朋友问我:你为什么要学编程?


为什么要学编程?每个人给出的答案都不一样,有人觉得编程很酷,所以我想学,有人觉得编程会对我工作有帮助,所以我要学编程,有人觉得编程能让我找到好工作,所以我得学编程。


那么编程到底是什么?


我常说,编程是螺丝刀,是扳手,是锤子。它只是一种工具,没有人能通过精通一种工具而被人们所尊重,人们尊重的是你通过这个工具做出来的东西,我们听说过国画大师,木匠大师,却从来没有过毛笔大师、锯子大师。所以,请想好:

你想要做出什么?


写出我想要的工具,用我的思路解决问题,这才是我学python的目的。


0.3 编程对我来说意味着什么?

   

对我来说,编程意味着我手头掌握了足够的材料,我可以用它来搭建我想要的东西。用搭建出来的东西提高我的生活质量和工作效率。


0.4 我如何利用编程

   

工作上,我会经常处理包含大量数据的excel,在同事们焦头烂额的一行一行的复制粘贴的时候,我会把他们存成csv文件,导入python处理完成后在输出为csv文件,excel打开后重新排下版就好了。别的同事一天的处理工作,我只需要二十分钟写程序,十分钟调试,再花个半分钟运行就好了。


生活中,根据学的爬虫知识。爬取租房信息,分析比较地区房价,确定租房的最佳地点;定时抓取豆瓣上的高分电影,收集起来自动发给我媳妇,写一个自动ping的程序,放在VPS上,检测网络通断,网络断了自动发邮件给我。



1章 我学习 Python

   

1.1 想

   

带着目的做事,我想做出什么,我要得到什么。


对于我们这些非程序员来说,更多的时候,我们并不需要知道一个程序的底层是如何运作的,我只需要知道它能通过什么代码,实现什么功能,其具体原理我不会去深究。这样虽然浮于表面,但是对于通过写程序提高效率的人来说,是一种最便捷的方式。


所以说,在我入门python的时候,我会去想我要做的东西是什么,达到这个目的需要哪些功能,然后通过搜索,知道达到这些功能需要哪些库,继续搜索得知这些库的使用实例。


1.2 看

   

研究别人的类似的代码,学习问题的解决办法。


找到别人的代码后,复制,运行,通过运行结果检测代码的作用,筛选其中我需要的部分,在Evernote里存储,标注。

观其大略,不求甚解。


1.3 干

   

着手处理,除了碰到完全不理解,无从下手修改的代码需要翻书查原理之外,其他情况只要程序能够成功运行,就算大功告成。


1.4 改

   

随着不断地成长,能力不断的提高,我会慢慢的理解之前写过的或者粘贴过来的一些代码的意思,这时候再回过头去看当时的代码,将其中冗杂的部分修改精简,重新思考,重新运行,来进一步巩固自己的知识。


2章 示例

   

只拥有《魔力教程》的基础知识,如何在未接触过网络编程的情况下做一个批量ping的工具。


2.0 为什么要写这个示例

   

做成你会做得事不难,有能耐的人能做成他不会做的事。


2.1 情形

   

大清早刚上班,领导:“听雨你给我滚过来!今天内网怎么这么卡!给我统计一下有多少人在用!查查有没有人未分配的IP!


”我:“领导,咱们内网电脑又不允许安装外网下回来的软件,您还没买网络管理设备和软件,要搞定很慢的……”


领导:“我不管!我不管!我不管!一小时之内搞定告诉我!”


2.2 想

   

碰上如此傲娇的领导,我也很无奈,介绍一下情况:我们的局域网地址为192.168.159.0、192.168.160.0、192.168.161.0、192.168.162.0,均为22位掩码(不要问我为何是这么奇葩的地址段,我也想知道上级网管是不是脑袋被门夹了)。


这个任务可以手动ping,但是我需要ping 1024个地址(VLSM),姑且不考虑时间问题,我一个个ping也绝对累吐血。所以,我需要实现的功能为:批量ping我的网段,看有哪些主机在线。


2.3 看

   

Google搜索“python ping”很轻易就找到了两篇示例:

http://blog.chinaunix.net/uid-23855119-id-3895547.html的A


和http://blog.topspeedsnail.com/archives/963的B


显然,B更为简洁,但是已经超出了我们在《魔力教程》的基础能理解的范畴,所以我选择A。


直接复制到pycharm。



这几行报错显然是提示有库没有导入,google一下知道是自带的库。 加上3个import后发现报错,所以只得一步步拆解


(1)寻找关键语句


我们要实现的这个功能的关键语句显然是执行ping命令的那一行,因为知道有ping,所以很容易定位到:




复制到新的文件中




(2)上下对比猜测


变量ip指的是想ping的ip地址,ip_num是要ping的次数。修改为:




运行结果:


       

成功!(请忽略那堆问号……这是IDE的问题,在cmd中就没有问题,见下图)


所以这里我们就得到了我们的核心语句——ping命令



2.4 干

   

开始搭建程序主体,定义一个函数并调用:


运行结果(内网电脑中没安pycharm,在cmd下运行):



成功!


将网段修改为局域网网段,将-n后面的包数改为1(此处不需要考虑arp的问题),for循环重复4次:



然后去泡杯茶,运行程序,边喝茶边在本本上画“正“字就好了。


代码很难看,效率也很低,但是它取代了我的重复劳动,没有这11行代码,我会用一上午的时间去打ip地址ping,而现在,我能在一个小时之内完成它。(程序速度大概3秒一个地址,存在的地址会更快些)



2.5 改

   

下一步等我有空的时候我可以给这个程序加上判断,输出哪些主机在线,并且使用多线程加速运行,最后做个gui方便我的同事们使用。但是那就是以后的事情了。


我并不知道os.system这句到底通过什么方式起作用,但是我蒙对了它的结果,猜对了如何修改,实现了目的。总耗时小于十分钟。等我有空的时候可以慢慢研究os这个库的用法,而现在,我用最短的时间做成了事,这就叫提高效率。


3章 对于编程的体悟

   

3.1 如何利用编程给工作加分

   

3.1.1节约时间

  1. 找出你工作中最占时间的工作(当然是指电脑能解决的)

  2. 思考这些工作的共性部分是那些,这些共性部分能否使用程序完成。

  3. 写程序


3.1.2露脸

前几天有幸跟两个局级领导(也就是市长那个级别)坐一辆车,车上请教他们年轻人发展和成长的问题,其中一个领导告诉我了一句话:“什么是机会?机会就是在某个领导面前把某件事做到最好。”


所以请思考,如果利用编程让你把某件事情做到最好,做到在你所在的小环境中无人能比。


懂的人已经懂了;不懂得人可以慢慢想;嗤之以鼻的人,呵呵哒。



3.2 如何利用编程给生活加分

   

3.2.1单身的人

学会批量爬妹子照片以后不要用这个技能去爬大量的妹子照片!不要用这个技能去爬大量的妹子照片!不要用这个技能去爬大量的妹子照片!


电脑玩的好的不要总以为靠给妹子修电脑就能找到对象,有句老话说得好“电脑修的好,备胎当到老。”


去给你们单位单身的美工妹子批量处理图片名称,去给你们单位单身的财会妹子批量处理excel表格,去给你们单位单身的人事妹子批量分发工资表。给追星的自动推送她偶像的信息,给花痴的爬点帅哥照片。万一刚才说的那些人里有觉得编程有趣想学的,主动教她啊!一来二去还搞不定,那你就得好好考虑一下你的长相问题了。


学一个月的爬虫,你学会了爬虫、数据库、数据可视化、网站,这四样加起来,足够让你成为你们公司美女小白们眼中神一样的存在!到那时候,还爬他妹的美女图片啊?!


3.2.1有对象的


媳妇就是你的甲方,甲方的需求就是圣旨,甲方想要的你要实现,甲方想不到的你要想到替她实现。


3.2.2兴趣爱好


爬虫是一种手机大量数据的方法,那么可以试着爬你兴趣爱好相关网站的信息,通过点击量或者回复量来排序,优先阅读质量高的部分。


3.2.3最后的思考

生活中的哪些事,能被编程变得更美好?


3.3 助你写出更好的 code

   

除了世界最小的眼镜制造商google和世界最大的同性交友网站github之外这两个大家都知道的网站外,还有什么能帮你写出更好的code。


3.3.1英语


经常会在群里看到有人讨论VPN,求助翻墙用什么好,我想问,你翻出去了又能如何?浩如烟海的英文资料你是否看得懂?在facebook和twitter上关注了一大堆中国人的朋友们,你们回到人人和微博可好?


所以,一定要有较好的英语阅读能力,这样你才能看懂英文的文档,搜索问题的时候不会遇到英文的网站就跳过。如果只看中文内容,谷歌和百度何异?

外面的世界很精彩,精彩源自丰富,外面的世界很无奈,无奈因为太多人看不懂那些丰富。


3.3.2虚拟机和VPS


大部分人使用的系统是windows和mac,非IT行业的人使用linux的数量几乎可以忽略。但是想写好代码,就应该学习在linux下进行编辑,不论是在可视化的桌面版还是命令行,都应当了解学习。


这时就涉及到了虚拟机和VPS。


虚拟机能在不影响你系统的前提下提供linux环境,便于练习。因为很多人都开始使用虚拟机,这里我着重说一下VPS。


有了VPS,你会发现一个不一样的世界。


有了VPS,你可以试验爬虫在百兆以上网速的爬取,充分制定自己的”反反爬虫策略“,有了VPS,你可以在需要的时候让你的程序24小时运行,有了VPS,你可以更方便的部署你的网站……这样的例子很多。有了自己的服务器,自己的公网IP,你会发现生活中的创新点又多了很多。


3.3.3双显示器


一图流,秒懂。


双屏这种东西就像固态硬盘一样,用了就戒不掉的。


 3.4 体悟.终章

   

你成为什么样的人,取决于你想成为并努力成为什么样的人,你写出什么程序,取决于你想写出并努力写出什么样的程序。


It's no use going back to yesterday,because I was a different person then.

回到昨天毫无用处,因为过去的我和今天有所不同。

——《爱丽丝梦游仙境》


希望朋友们不要辜负自己美好的时光。




欢迎加入预备班群,参加每周分享



 
说人话的Python分享 更多文章 说人话的 python 分享 活动 | 让 Python 成为你的数据分析小帮手 产品经理的编程课 | 42天用编程亲手实现想法 产品经理能用 Python 做什么? 公开课报名 | 一节课教你写爬虫,零基础小白也能学会
猜您喜欢 某榴开放注册3天? 当医院CIO遇上互联网CTO,谁碰了谁的奶酪 Mac下 10 款最棒的编辑器 “Cocos 新平台 新生态”催生行业价值裂变 十分钟玩儿转Picasso