avatar

fengkx's Blog

fengkx

Student & Coder

Guangzhou, China
Build with Hexo and Next.js

iCal & Python 学习

学习了 Python 学着做了一个 iCal 的日历,这算是我第个真真正正的自己写出来 (不是跟着教程来敲),并且有实际可用功能的程序。顺便回顾一下学习 Python 的经历和感想

为什么学 Python?

学习一定要有动力。这个动力可能只是一个想法,但是那将让你的学习的过程中有目标,进而朝着目标有计划地靠拢。而对我来说,我一开始的动机来自于可能吧的一篇文章中的一句话

花 1 天时间,学会如何写一个简单包含 replacements 函数的 Python 脚本。
把要替换的元素,都写进这个 Python 脚本里。

当时打算开一个微信公众号,所以想弄一个可以自动排版的脚本,于是开始学习 Python,但是大概是我没有编程基础的原因,我做不到花一天时间就把脚本写出来的程度,反而决心要认认真真的学习这一门语言了。其实因为前端的 CSS 什么的功夫还不到家,直到现在我也没有写出这样一个脚本。(立个 flag 接下来要学前端三大户了)

  1. 只在 "学习区" 练习;
  2. 把要训练的内容分成有针对性的小块,对每一个块进行重复练习
  3. 整个练习过程中,随时能获得有效的反馈;
  4. 练习时注意力必须高度集中。
同人于野 万万没想到

先引用一个关于 *『刻意学习』* 的总结,下面对比一下 Python 和 C++ 学习上的差别:

  1. Python 语法相对 C++ 简单得多,而且报错上也友好 (至少对我是这么觉得的) 这样更符合『学习区』的定义,而不是一下子就进入了所谓的『恐慌区』
  2. Pipy 有大量的第三方库,让初学者可以更轻松的开展例如爬虫,图形界面编程,数据分析无所不有。相比于学了那么久的 C还没有逃出那个所谓的『黑框框』这种反馈可以说是非常的及时有效了。Python 语法中的那些高级封装比如切片操作比起 C中的字符串操作真的爽多了

当然 C 语言在后续的课程还有 "底层" 的应用是 Python 很难做到的,Python 本身也是 C 语言实现的呢。Python 和 C 语言各有各擅长的区域啦。比如要处理字符串,当然是 Python 更好写啦。
!重点:学 Python 并不影响学 C 甚至说会有帮助 (下面会说)
可能有人会担心语法会弄混,的确语法偶尔会弄混,但当你按下编译键时,很快你就能得到及时反馈并改正语法。

我学 Python 的过程和收获

前面说道我本来是想写一个包含 replacements 函数的脚本,但我发现直接来不行啊。各种看不懂,所以还是系统一点的学吧。

  • 我先是在瘳雪峰的 Pyhon 教程上学的。教程写得由浅入深,学到了不少,当然很多看不懂。不懂反复看多几次,如果实在不懂,那要么是放弃掉了,要么是先学了些前置知识再看。
  • 然后是看了一本书A byte of Python 英文版 OR
    A byte of Python 中文版书上有很多示例程序,对于语法有更加清晰的理解,书上还有一个关于如何解决实际问题的例子,这让我认识到会只会语法没有意义。
  • 然后看了一部分大学 Mooc 上Python 语言程序设计其中第七周的计算生态获益匪浅,而这种程序设计的通法不仅对 Python 对 C++ 甚至其他的编程语言都是相通的。
  • 接着又学习了Python 网络爬虫与信息提取学习了使用库,学习使用一个第三方库。更重要的是深刻的理解『自顶向下的程序设计方法』中各个函数的功能和参数设计。还有函数之间的相互联系。真的百闻不如一见,而百见也不及亲自尝试的理解深刻。过程中还读了一本图解 HTTP, 对 Http 协议各种 method 错误码和 TCP/IP 有个大概了解。

iCal

感觉之前的第一个爬虫贴的到处是代码的形式有待改进,大部分都写到了代码的注释里。传送门
因为功力不足所以只能通过手动获取 HTML 文本,再用 BeautifulSoup 库配合 re (正则表达式) 爬取课表,再用iCalendar 库生成 ics 文件。

手动获取 HTML

还是那句话,功力不足,HTML 要在开发者工具中获取,按下「shift + ctrl + C」鼠标选中对应的元素然后 copy 保存到一个文本文件中
获取 HTML

收获

尽管程序实现很不尽如人意,但至少对我个人而言不用每学期手动输课表到 Google Calendar 了。并且过程中也锻炼了自己的编码能力。不得不再提一下函数的实现和参数的设计,真的动下手写一个,熟悉了一般套路感觉非常好。

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处。

本文链接: https://www.fengkx.top/post/ical-and-learning-python/

发布于: 2018-03-17