学Python坚持不下来的根本原因

当我学习Python时,最让我沮丧的一件事就是所有学习资源的趋同性。比如我想学习如何使用Python制作网站,但是似乎每个学习资源都希望我先花2个月的时间来研究枯燥的Python基础语法,然后才开始考虑有趣的网站代码,其实这真的有点无聊并且容易让人放弃……

这种学习方法很容易造成我的拖延症。我磨磨蹭蹭了几个月,我在网上的语法教程中学习了两节课,然后停了下来。我看了看Python代码,代码很陌生且令人困惑:

from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

上面的代码来自Django的教程,这是一个流行的Python网站开发框架。经验丰富的程序员经常会向你抛出上述片段。他们会说:“So Easy啊!” 但是,即使是看似简单的几行代码也可能令人难以置信。例如,为什么有些行缩进?什么django.http啊 ,为什么在括号里有这些东西?在不了解Python的情况下,了解所有内容如何组合起来会非常困难。

问题是你需要了解Python语言的构建基块才能构建一些有趣的东西。上面的代码段创建了一个视图,这是使用流行的MVC架构的网站的关键构建块之一。如果你不知道如何编写代码来创建视图,那么创建动态网站实际上是不可能的

基于上面的理由,大多数教程都假定你需要学习所有 Python语法,然后才能开始做有趣的事情。当你真正想做的是分析数据,建立网站或创建自主无人机时,花费数月时间在枯燥的语法上,长时间得不到正反馈(类似游戏中打怪升级的成就感),就没办法有直观的感觉和成就感,长期下来会导致动力不断减弱,甚至导致偏离了一开始的目标,而荒废了所有的事情。我喜欢将其视为“无聊的悬崖”。你需要先能够爬上“无聊的悬崖”,才能进入“有趣工作的领域”。

面对“无聊的悬崖”几次走开之后,我发现了一个对我来说更好的方法。方法是将学习基础知识与构建有趣事物相结合。我花了尽可能少的时间来学习基础知识,然后立即投入到创造令我感兴趣的事情上。在本文中,无论你为什么要学习Python,我都会逐步引导你如何复制这个过程。

1.找出促使你学习Python的动机

在开始在线学习Python之前,值得问自己为什么要学习它。这是因为这将是一个漫长且偶感痛苦的旅程。没有足够的动力,你可能不会成功。例如,当我不得不记住语法并且没有动力时,我就在高中和大学的编程课上睡觉。而相反,当我需要使用Python来建立一个网站来自动对文章进行评分时,我会熬夜来完成它。

弄清楚激发您动机的因素将帮助您弄清楚最终目标,以及一条不会让你感到厌烦的道路。您不必准备一个确切的项目,而只需要思考:你学习Python是为了解决哪一个具体领域的问题

所以,选择一个您感兴趣的领域,例如:

  • 数据科学/机器学习
  • 移动APP
  • 网站
  • 游戏类
  • 硬件/传感器/机器人
  • 使工作自动化的脚本
  • 数据爬虫

是的,您可以使用Python制作机器人!摘自Raspberry Pi Cookbook。

找出你感兴趣的一两个领域,然后你就会有动力坚持下去。你将因为你选择了领域而有更明确的学习目标并坚持下去,最终将在这个领域构建你自己令人惊叹的项目!

2.学习基本语法

不幸的是,这一步不能被跳过。在深耕某个具体领域之前,必须学习Python语法的基础知识。你需要花最少的时间在这上面,因为这个过程不会给你提供源源不断的学习动力;所以,尽快了解一下,然后上手实际写代码,边做边学,不要怕,只要开始做即可!

这里我推荐我用到的,只推荐两个,多了烦:

  • 菜鸟教程 最简洁、最快速的python入门教程,查询函数、语法最快捷的网站
  • 成为专业人士笔记 全面了解python,通过问题学习知识的绝佳手册

我必须要强调的是,你应该只花最少的时间在基本语法上。你越快地从事项目工作,就会学得越快。以后遇到问题时,你始终都可以回过头来,带着问题去参考上面的语法以及知识点;理想情况下,你应该只在此阶段花费几周,而且绝对不要超过一个月

3.开始结构化项目

学习了基本语法后,就可以开始自己创建项目了。项目是学习的好方法,因为项目会不断需要你去应用你所学到的知识,而在实际的学习过程中,你需要经常用到这个知识,否则将很难记住它。项目将提升你的能力,帮助你学习新事物,并帮助建立向潜在雇主展示能力的机会。

但是,在这个阶段由于不熟悉随意建立的项目结构会让你陷入很多麻烦,需要参考很多文档。因此,通常最好结合一些成熟的结构化项目框架,直到你觉得可以完全掌控一个大型结构化的项目为止。许多学习资源都提供了结构化的项目,这些项目可以使你的精力集中在所关心的领域去构建有趣的东西,同时又可以避免去解决那些高并发、session、权限、多线程等这些底层的技术(避免重复造轮子)

让我们看一下每个领域中用于结构化项目的一些好的资源:

数据科学/机器学习

  • 这里只推荐中国的apache非盈利机构整理的教程,很简单,因为里面啥都有,是万千爱好者辛苦整理的github项目: https://github/apachecn

移动APP

  • Kivy中文教程 -Kivy是一种工具,可让你使用Python制作移动应用程序

网站

  • Flask教程 — Flask是Python的流行Web框架。这是入门教程。
  • Bottle教程 — Bottle是另一个适用于Python的Web框架。这是开始的方法。
  • Django教程 —使用Django(复杂的Python网络框架)的指南。
  • Tornado教程–超高并发web框架

游戏类

  • Pygame教程 -Pygame是一个流行的Python游戏制作库,这是它的教程列表。

你可以使用Pygame制作游戏的示例。这是Phil Hassey制作的芭比海马历险记1.0。

硬件/传感器/机器人

  • 将Python与Arduino结合使用-了解如何使用Python控制连接到Arduino的传感器,目前国内很难找到免费的系统性课程,网易有个收费的比较系统,不算贵4.9元
  • 使用Raspberry Pi学习Python —使用Python和Raspberry Pi构建硬件项目,PDF版下载
  • 使用Python学习机器人 -学习如何使用Python构建机器人,pdf下载
  • Raspberry Pi Cookbook–学习如何使用Raspberry Pi和Python构建机器人。

自动化工作的脚本

  • 使用Python自动执行无聊的工作 -了解如何使用Python自动执行日常任务。

数据爬虫

scrapy中文教程—最流行的分布式数据爬虫框架

splash中文教程—-可以解析js动态脚本、自动登录等,爬取动态网站的不二之选,与scrapy结合使用

在你自己的领域中借助框架完成了一些结构化项目后,现在应该可以着手进行更加有趣的项目了。但是,在这样做之前,花一些时间学习如何解决问题是很重要的。

4.挑战有趣的项目

一旦完成了一些结构化项目,就该独自开发一些有趣的项目了,以继续更好地学习Python;你仍然需要获取各种资源和学习新的概念,但是你将致力于自己想做的事情。在开始研究自己的有趣项目之前,你应该能够轻松地调试程序中出现的错误及问题;这是你应该熟悉的一些资源:

  • StackOverflow-一个社区问答站点,人们可以在其中讨论编程问题。你可以在此处找到特定于Python的问题。
  • Google-每个有经验的程序员中最常用的工具。尝试解决错误时非常有用(国内百度)
  • Python官方文档 -在Python上查找参考资料的好地方。

一旦对调试问题有了充分的了解,应该立刻着手从事自己感兴趣的事情。例如,我一个朋友在学习python编程后不久,就开发了自动交易股票的工具。

以下是寻找有趣项目的一些技巧:

  • 扩展以前处理的项目,并添加更多功能。
  • 前往你所在地区的Python聚会,并找到从事有趣项目的人员。
  • 查找要贡献的开源软件包。
  • 看看是否有任何当地的非营利组织正在寻找志愿开发商。
  • 查找他人制作的项目,并查看你是否可以扩展或改编它们。Github是找到这些的好地方。
  • 浏览其他人的博客文章以找到有趣的项目构想。
  • 考虑可以使你的日常生活更加轻松的工具,并加以构建。

记住一开始不要图大,从非常简单的事情开始通常很有用,这样你可以获得信心和持续动力;最好开始一个小项目,然后再完成一个从未完成过的大项目

寻找其他一起做事情的人也是很有帮助的

如果您真的想不出任何好的项目构想,那么下面我们讨论了每个领域中的一些构想:

数据科学/机器学习

  • 可视化州选举的地图。
  • 对京东公共数据接口几亿条数据进行实时统计分析
  • 可以预测你居住地天气的算法。
  • 预测股市的工具。
  • 自动汇总新闻文章的算法。

你可以制作此地图的更具交互性的版本。来自RealClearPolitics。

对京东数据进行统计可视化,案例来源 mybi

移动APP

  • 追踪你每天走多少公里数的应用程序。
  • 向你发送天气通知的应用程序。
  • 基于位置的实时聊天。

网站

  • 一个可以帮助您计划每周进餐的网站。
  • 一个允许用户查看视频游戏的网站。
  • 一个记笔记的平台。
  • 一个卖云服务的网站 (基于Tornado框架开发的网站案例)

游戏类

  • 一个基于位置的手机游戏,你可以在其中占领领土。
  • 您可以编程解决字迷的游戏。

硬件/传感器/机器人

  • 传感器可监控你的房屋温度,并让你远程监控房屋。
  • 更智能的闹钟。
  • 自动行走的机器人,可检测障碍物。

使工作自动化的脚本

  • 自动执行数据输入的脚本。
  • 从网上抓取数据的工具。

数据爬虫

抽取网络数据,并进行数据分析 ( 百度指数案例)

我朋友的第一个项目是将我的自动论文评分算法从R适应到Python。最终看起来并不漂亮,但是它给了我成就感,并开始让我不断完善自己的技能。

关键是要选择好领域并去做,如果你对选择完美的项目太过着迷,你将永远无法创造一个项目。

5.继续从事更艰巨的项目

不断增加项目的难度和范围。如果你自己所构建的内容都能很轻松地完成,则意味着该进行一些复杂度更高的尝试了。

以下是有关此阶段的一些想法:

  • 尝试教新手如何构建你制作的项目。
  • 您可以扩展你的工具吗?它可以处理更多数据,还是可以处理更高的并发量?
  • 你可以使程序运行更快吗?
  • 你可以让你的工具对更多人有用吗?
  • 你如何将自己的作品商业化?

向前走

归根结底,Python一直在发展。只有极少数人可以大声的说自己可以完全理解该语言,并且这些人正在对Python的发展做着贡献

你需要不断学习和尝试项目。如果有效果,某天你会发现自己打开6个月前的代码并回顾的时候,想要打死当时的自己。如果真到了这一步,那么你的方向就对了。从事你所感兴趣的事情,这样才会不精疲力尽或无聊。

Python是一种非常有趣且值得去深入学习的语言,我认为任何人只要有合适的动机,就可以熟练掌握它。

努力向前走吧!如果你需要学习python语言,先使用现成的Python3云环境

,编写你的第一个“hello world”程序来试试感觉也许不错,祝你成功!

有问题随时来创帆云找我

更多的python教程,关注公众号:

 

更多推荐

学习Python坚持不下来,5个步骤让我变回精神小伙