宝贝儿,一起学Python呀 - I
这是一系列文章的开始。其实我本意是想跟着中国电子学会的青少年软件编程(Python)等级考试大纲,给俩米介绍一下Python的知识,帮着两个小家伙考个证书,万一小齐一高兴给点零花呢。本来想好文风应该是“小宝宝,今天,粑粑要带你走入程序的世界”这样幼稚又2B的风格,结果一动笔就飘了,小可爱风格也回到老爷们儿侃大山风格,而尽量不说少儿不宜内容,已经算是我最后的坚持。。。
得了,我这高阶拖延症就别说那么多了,咱们聊起来。
第一篇 又不想当程序员,学编程干嘛?
说实话,就我这水平还好意思写这个其实挺有点厚脸皮的。我从事的工作和编程没有任何关系,也不是程序员,唯一沾边的就是头发似乎也不怎么多。。。 而且我这水平和知识储备其实也不够写东西的,抄袭就算了,不是多高尚,一提起不费脑子就费手的活儿我就头大。
在这个系列的文章里,我想和你们聊聊我是怎么走进编程的世界,编程是如何帮助我提高工作效率,如何改变我的思考方式,甚至影响到我对这个世界的感受。我相信我的人生正在孕育着一些不一样的种子,我也确信,我有能力让自己变得和以前不一样。所以我必须从一些简单的事情做起,比如,尝试让自己写下这一系列Python文章。
由于我并不是程序员,也没有任何专业背景,所以我准备以中国电子学会的青少年软件编程(Python)等级考试大纲为主线。不否认,我写这个系列的文章也希望能帮助你们通过这个考试,学习之余还能获得个证书,岂不快哉?
写这种文章,对我来说最大的挑战是我毕竟不是程序员,我对编程的理解还停留在很浅薄的程度,甚至至今我的代码库里还有程序错误没有解决方案,这也导致我内心其实非常忐忑,一旦写错什么,误导了别人就不好了。 但是我坚信我们不应该因为害怕犯错而什么都不去做,学习本来就离不开犯错。虽然这个世界告诉我们躺平会减少很多烦恼,在郁闷的时候我也想劝自己放弃挣扎算了。但是,还是努努吧,努努就有希望,万一有呢,是吧。
当然,任何事物都有两个方面。也正因为我不是专业人员,所以我很了解初学者战战兢兢的心情。站在Python这座风景秀丽的大山前,站在这座山前,我们第一个反应应该不是期待山巅的风景,而是扪心自问,我爬的上去吗? 这是很正常的心态,但是相信我,这个星球上有很多很多人,他们都不是专业人员,也不是程序员,也不是计算机专家,他们只是学生,老师,科研人员,普通上班族,他们都很好的用Python在帮助自己。我们学习踢球,不是为了成为梅西C罗,我们也没必要强迫自己学会连过五人或者倒钩破门。只是为了平时能和朋友踢几脚球,那足球没那么复杂。Python最大的魅力也正在于此,不管使用者的程度如何,它都能帮助你。
这应该是一个特别好的问题。以前我遇到问题的时候,总会先“百度”一下有没有软件能解决我的问题。但是很多时候,其实我的问题太“小”了,太细节了。 比如说,你们一定知道PPT这个软件 (准确的说,我们说的应该是微软Office套件中的演示软件Powerpoint,PPT仅仅是这个软件支持的一种文件格式,而且现在这个格式也早就进化成了PPTX。PPT只是一种通俗的说法)。PPT是一个特别棒的软件,功能非常庞大,能做很多事情。但有时候我的需要只是画个流程图,这个流程图只包含文本框,箭头之类的形状。为了这么简单的功能,而下载一个庞大而且不怎么便宜的软件,似乎有点大炮打蚊子的感觉,但我们仅仅只需要一个蚊子拍,而我这个小小的“蚊子拍”,很难让那些专业的软件厂商,或者程序员,来专门耗时间帮我写个小程序来解决问题,这个确实不怎么现实。即使有程序员愿意提供软件定制服务,恐怕价格也不是我能承受的。
再比如,我举个实际的例子。我平时会定期处理一堆Excel表格,大概20来个吧. 这些表格有相同的结构,也就是说它的列(行话叫字段,不过咱不是专业人士,不在乎)都是一样的。我需要定期从每个表格当中按照一定的格式读取一系列数据,然后把这些数据按照一定的规则处理一下,然后把处理好的数据整合在一起。
可以想象,如果每次都要用Excel程序来依次打开这些文件,然后靠着我的双眼皮大眼睛去处理数据,然后再一个一个拷贝出来,然后找个地方贴上去。。。 我想这一天我会非常的忙碌。也许看起来这样的员工好像很努力很认真,但是我自己知道,这是在浪费生命。我完全可以让电脑来做这件事情,然后把省下来的时间用来思考更多更有价值的问题,这样说不定我也能让我自己更加有价值呢,是吧。
这件事情我当然可以找微软,因为其实Excel就提供了强大的VBA程序来做这件事。但VBA有很大的问题,第一,它只能在微软的Excel里运行,不具备通用性。第二,Excel VBA不怎么好学(得,一不小心把实话说出来了)。我之前确实有用Excel VBA来做这件事,但是相信我,仅仅在“自动打开表格并读取数据后,关闭这个表格”这个问题上,就已经让我卡了。天书一样的代码,看着就让人没有生活的情趣,虽然后来依靠一些手段解决了,但总觉得不那么“高级”和“优雅”。
所以有没有这种可能,就是有一个不怎么难学的编程软件,能提供各种各样的工具,就像乐高里各种各样的现成的积木和连接件一样,让我只要使用这些积木和连接件,就能拼出我想要的小程序小部件,而不是连最基础的积木连接件都得我自己搞,这不是很美好吗?就像这样:
1 | 1. 引入读写Excel的工具 |
我并不需要了解Excel本身的接口啊,API啊,SDK啊(这些都是什么???),我只需要把注意力集中优化我自己需要做的事情的逻辑或工作流,然后按照这个编程语言的要求和规则写出来就可以了,这不是挺好吗。
初学者经常面对的第一个问题,恐怕就是一键三联: “好学吗?””功能强大吗?”“和XXX比如何呢?”
我想说,如果您的智商和我差不多,那很遗憾,Python不复杂,但也没到一下子就能学会的程度。不然干嘛Python程序员的收入都那么高,要是那么容易就玩儿透了,我不早就人生巅峰了么。 要知道一般应用场景下,Python本身其实没什么太复杂太难理解的东西,但您要了解的远不止程序本身。比如,如果您想用Python抓取某只股票的股价,嗯,这叫爬虫,Python的看家本领,任何一本Python教程都会教我们怎么用Python写爬虫。我也有用Python定期抓取股票价格,然后当价格高于某个点时给我发邮件提示洒家要发财了。不过遗憾的是,这么长时间我就没收到过这样的邮件,走上人生巅峰也依然是遥不可及的梦。经测试,不是程序有问题,而是股票不给力。。。 好了我接着说,如果您想写个抓取股价的程序,那您不能这样:
1 | Python, 爷买了港股00992,给爷查股价,现在马上Now!股价到了15块,给爷发个邮件,主题是“您要当高富帅走上人生巅峰了呢” |
虽然Python很NB,但如此简单粗暴,怕也是不行的。您就算对着Siri或者小度或者小爱或者小冰(这都是什么奇怪的东东)这么说,弄不好都不会有什么回应。用Python实现这样的功能,您不会在代码本身遇到太多问题,但是您需要了解一些Python代码以外的知识和问题,比如
1 | 您了解您想抓取信息的这个网站吗? |
哈哈,相信看到这里您已经准备打退堂鼓了。但是我是这么想的,像我们这样的普通人,每天早起睁眼就要催孩子起床,送孩子上学,然后在车流滚滚的城市中挤到办公室,然后面无表情地坐在电脑前面点鼠标,大脑甚至连一小时有价值的思考都不用做,难道这就是我们想要的工作,想要的生活?难道我们真的只能用忙碌来安慰自己,用消耗自己生命的代价来告诉公司告诉老板我的价值?我们并不奢求自己能飞多高,也并不想把希望寄托在别人的认可上,但至少,做一些能让自己认可的事情,能让自己平凡的生活不那么平庸,我觉得这还是可以做到的。每天给自己一些时间思考,每天做出一些切实的小小改变,每天引入一些新东西 帮助自己更有效率,这难道不比做个键盘鼠标操作员更能让我们的人生多一些颜色么?这不是鸡汤,这是我们奖励给自己的鸡腿呀!
Python是很勇,但真正超勇的,正是我们那依然奔腾如少年的内心呐。
第一篇就写到这儿,下周见。