学习Python坚持不下来,5个步骤让我变回精神小伙
学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语法的基础知识。你需要花最少的时间在这上面,因为这个过程不会给你提供源源不断的学习动力;所以,尽快了解一下,然后上手实际写代码,边做边学,不要怕,只要开始做即可!
这里我推荐我用到的,只推荐两个,多了烦:
我必须要强调的是,你应该只花最少的时间在基本语法上。你越快地从事项目工作,就会学得越快。以后遇到问题时,你始终都可以回过头来,带着问题去参考上面的语法以及知识点;理想情况下,你应该只在此阶段花费几周,而且绝对不要超过一个月。
3.开始结构化项目
学习了基本语法后,就可以开始自己创建项目了。项目是学习的好方法,因为项目会不断需要你去应用你所学到的知识,而在实际的学习过程中,你需要经常用到这个知识,否则将很难记住它。项目将提升你的能力,帮助你学习新事物,并帮助建立向潜在雇主展示能力的机会。
但是,在这个阶段由于不熟悉随意建立的项目结构会让你陷入很多麻烦,需要参考很多文档。因此,通常最好结合一些成熟的结构化项目框架,直到你觉得可以完全掌控一个大型结构化的项目为止。许多学习资源都提供了结构化的项目,这些项目可以使你的精力集中在所关心的领域去构建有趣的东西,同时又可以避免去解决那些高并发、session、权限、多线程等这些底层的技术(避免重复造*)
让我们看一下每个领域中用于结构化项目的一些好的资源:
数据科学/机器学习
- 这里只推荐中国的apache非盈利机构整理的教程,很简单,因为里面啥都有,是万千爱好者辛苦整理的github项目: https://github.com/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;你仍然需要获取各种资源和学习新的概念,但是你将致力于自己想做的事情。在开始研究自己的有趣项目之前,你应该能够轻松地调试程序中出现的错误及问题;这是你应该熟悉的一些资源:
- *-一个社区问答站点,人们可以在其中讨论编程问题。你可以在此处找到特定于Python的问题。
- Google-每个有经验的程序员中最常用的工具。尝试解决错误时非常有用(国内百度)
- Python官方文档 -在Python上查找参考资料的好地方。
一旦对调试问题有了充分的了解,应该立刻着手从事自己感兴趣的事情。例如,我一个朋友在学习python编程后不久,就开发了自动交易股票的工具。
以下是寻找有趣项目的一些技巧:
- 扩展以前处理的项目,并添加更多功能。
- 前往你所在地区的Python聚会,并找到从事有趣项目的人员。
- 查找要贡献的开源软件包。
- 看看是否有任何当地的非营利组织正在寻找志愿开发商。
- 查找他人制作的项目,并查看你是否可以扩展或改编它们。Github是找到这些的好地方。
- 浏览其他人的博客文章以找到有趣的项目构想。
- 考虑可以使你的日常生活更加轻松的工具,并加以构建。
记住一开始不要图大,从非常简单的事情开始通常很有用,这样你可以获得信心和持续动力;最好开始一个小项目,然后再完成一个从未完成过的大项目
寻找其他一起做事情的人也是很有帮助的
如果您真的想不出任何好的项目构想,那么下面我们讨论了每个领域中的一些构想:
数据科学/机器学习
- 可视化州选举的地图。
- 对京东公共数据接口几亿条数据进行实时统计分析
- 可以预测你居住地天气的算法。
- 预测股市的工具。
- 自动汇总新闻文章的算法。
你可以制作此地图的更具交互性的版本。来自RealClearPolitics。
对京东数据进行统计可视化,案例来源 mybi
移动APP
- 追踪你每天走多少公里数的应用程序。
- 向你发送天气通知的应用程序。
- 基于位置的实时聊天。
网站
- 一个可以帮助您计划每周进餐的网站。
- 一个允许用户查看视频游戏的网站。
- 一个记笔记的平台。
- 一个运行业务的网站 (基于Tornado框架开发的网站案例)
游戏类
- 一个基于位置的手机游戏,你可以在其中占领领土。
- 您可以编程解决字迷的游戏。
硬件/传感器/机器人
- 传感器可监控你的房屋温度,并让你远程监控房屋。
- 更智能的闹钟。
- 自动行走的机器人,可检测障碍物。
使工作自动化的脚本
- 自动执行数据输入的脚本。
- 从网上抓取数据的工具。
数据爬虫
抽取网络数据,并进行数据分析 ( 百度指数案例)
我朋友的第一个项目是将我的自动论文评分算法从R适应到Python。最终看起来并不漂亮,但是它给了我成就感,并开始让我不断完善自己的技能。
关键是要选择好领域并去做,如果你对选择完美的项目太过着迷,你将永远无法创造一个项目。
5.继续从事更艰巨的项目
不断增加项目的难度和范围。如果你自己所构建的内容都能很轻松地完成,则意味着该进行一些复杂度更高的尝试了。
以下是有关此阶段的一些想法:
- 尝试教新手如何构建你制作的项目。
- 您可以扩展你的工具吗?它可以处理更多数据,还是可以处理更高的并发量?
- 你可以使程序运行更快吗?
- 你可以让你的工具对更多人有用吗?
- 你如何将自己的作品商业化?
向前走
归根结底,Python一直在发展。只有极少数人可以大声的说自己可以完全理解该语言,并且这些人正在对Python的发展做着贡献
你需要不断学习和尝试项目。如果有效果,某天你会发现自己打开6个月前的代码并回顾的时候,想要打死当时的自己。如果真到了这一步,那么你的方向就对了。从事你所感兴趣的事情,这样才会不精疲力尽或无聊。
Python是一种非常有趣且值得去深入学习的语言,我认为任何人只要有合适的动机,就可以熟练掌握它。
努力向前走吧!如果你需要学习python语言,先使用现成的Python3云环境
,编写你的第一个“hello world”程序来试试感觉也许不错,祝你成功!
有问题随时来创帆云找我
下一篇: 解决lombok的注解不起作用