从我们的Python培训教程开始,我们已经学习两种新的数据类型:列表和字典,以及while循环和for循环。同时,我们还用Python写了好多个小游戏!
回想一下,或许在不久之前,你还带着迷茫,犹豫着是否要敲开Python的大门。而现在,不知不觉中,相比最初的起点,你已经迈开了好长一段距离。
走到这里,我想你担忧的问题或许不再是"我究竟能不能学会Python?",而是"我应该如何更高效地学习Python?"。
大部分的Python学习问题都可以归纳为这两类:
我十分理解,这就好比我们在上学时,明明老师讲的每个字都听进去了,但铃声一响,新学的知识就从脑袋溜走了;复习到半夜,明明胸有成竹,但看到考卷的时候却一脸懵逼。
作为一个引路人,我希望我能做些什么。思来想去,最好的方法可能是把我闯荡编程江湖至今积累的经验传授给你——教你一些编程学习的思维,助力突破瓶颈。
毕竟,编程学习可不像我们上学那会,只是简单看课本、背书和做练习应付考试而已。我们学Python是为了利用编程来解决现实问题,为了达到这个目的,思维的培养是必不可少的。
如果说,知识讲解是为了让你掌握基本功、项目实操是为了增加实战经验,那么,这节课的目的,是为了让你增加内功,提升Python学习效率和应用水平。
这三节思维课分别是:第一节思维课帮你突破编程学习瓶颈的思路,掌握高效学习Python的方法;第二节课让你获得独立解决代码报错问题的能力;第三节课,你将做自己的"产品经理",学会用编程思维构思一个产品。
话不多说,接下来我就来打开你的任督二脉。首先,来看看第一个"学习瓶颈":知识学完就忘。
瓶颈1:知识学完就忘
针对这一点,我的经验是:忘了就忘了吧。等到要用的时候"临时抱佛脚"也行得通的,毕竟编程是"开卷"的,你可以随时查阅。
究其原因,我们学习编程是为了获得一门实用技能。因此,所有的编程知识并不是用来死记硬背的,而是自己真正掌握,学会怎么用!
有同学要问,既然要学会怎么用,不先掌握知识,怎么运用起来呢?
这里有个误区:在编程学习中,掌握知识和记住知识是两个概念:掌握知识是知道有个知识点,并了解它往哪儿用,而记住知识只会强行记忆知识点,单不一定知道怎么用,用在哪儿?
然鹅,Python涉及的知识点非常多,即便把脑子塞爆也不可能都记住。所以在学习阶段,我们只要对这些知识有个印象,遇到不明确的,就去翻看学习记录,找到知识点的具体用法,再运行代码检验。
一回生二回熟,当你运用足够多,就会形成"肌肉记忆",对使用场景烂熟于胸。
在这里,我要介绍给大家一个对我而言非常有效的学习方法:【案例笔记法】。具体长啥样,我们看几个例子就懂了。
用法查询笔记
我自己在初学编程的时候,非常重视案例理解、消化知识。因此,我的笔记会以案例居多。比如我们先来看一个最简单的"算数运算符"相关笔记: (扫一眼就行)
知识:算数运算符
大家可以发现,这张笔记是用小例子来说明不同算数运算符的用法,并且用注释说明了(1)代码含义;(2)实际运行结果。
我们再来看看"列表"相关的笔记,这里,我记了一些对列表的常见操作。
虽然课堂上我们也是以案例带出知识点,但老师还是建议你能在课后制作一份不同于课堂的案例,写出"代码含义"和"实际运行结果"的注释,这样才能加深对知识的第一印象,需要的时候才想得起笔记在哪儿。
最后,再来看看以"字典"知识为例的笔记,当然啦,要记什么内容取决于你对知识点的熟悉度。
知识:字典
像这样,当你学习更多Python知识点时,你就能积累越来越多的【用法查询笔记】:
于是,你的学习过程立马轻松了很多,因为很多知识并不是要求自己直接记在脑子里,可以放到【用法查询笔记】中。
说完了【用法查询笔记】,接下来我们来看看【深度理解笔记】
深度理解笔记
【深度理解笔记】重点在于"理解",所以笔记内容主要是记录对知识的理解。比如你可以看我对于使用"循环"知识的理解笔记:
可以看到,如果说【用法查询笔记】解决的是"知识点是什么"的问题,那么【深度理解笔记】更侧重解决"为什么要用"以及"怎么用这个知识点"的问题。
我们再来看一个关于列表和字典的例子:
当然,深度理解笔记不是一蹴而就的,它会随着你对某一知识的理解程度的加深而不断完善。
知识管理
如果你学Python学到"走火入魔"的话,你会发现【深度理解笔记】和【用法查询笔记】本质上就是一个"字典嵌套列表",其中【深度理解笔记】是键,【用法查询笔记】是值。
这样子,随着我们的知识库越来越多,知识结构越来越完整,我们使用知识也会得心应手。
所以,如果你发现自己是"学完即忘"的金鱼记忆体质,不妨试一试老师上述所教的笔记法。当然,第一步是不要怕懒哈哈。
瓶颈2:缺乏解题能力
我认为其中一个很重要的原因是还没有形成解题的思路,殊不知,解题技巧也是需要练习的。虽说解题思路因人而异,但从中提炼共性的话,我会将难题分为以下几步:
如何解题
接下来,我会用一道经典的题目来详细解释上述步骤:用Python打印九九乘法表:
为了让问题变得清晰,我们得先知道"九九乘法表"长什么样,即我们最终想要呈现在终端结果是什么样。
假设我们的目标是在终端打印这种格式的九九乘法表:
知道了实现的结果后,我们就来思考一下,解决这个问题要用到哪些知识?
首先很明显,要打印信息就必须用到print()函数。
我们可以留意到,九九乘法表是有一定规律的,重复的结构,所以我们可以想到用循环来处理。
同时,我们能看到数字是在灵活变动的,所以用"格式化"字符串来为变动的数字预留位置会方便些。
现在我们知道需要用到"循环"和"格式化字符串"相关知识,那我们就可以开始思考切入点:先从什么地方入手来解决这个问题。
我们再来观察九九乘法表,我们会发现一个规律:每一行的等式里,第一位数会递增,第二位数则会保持不变,并且在第几行就会有多少个等式。
也就是说,每一行其实都可以是一个小循环,那我们就可以以此为切入点,先把每一行的小循环写出来,再进一步寻找规律。
记住从简单的切入点入手,解决一部分问题,往往会让问题变得更简单,更容易被解决。
当循环次数确定的时候,我们优先使用for循环。像这种知识,就可以记在关于循环的【深度理解笔记】中。
那么,我们开始用for循环打印九九乘法表的第二行和第三行吧:
但是,运行后你会发现这样写的话每一个等式都会换行,而我们想要的结果是:
现在我们希望print出来的东西不换行,那怎么实现呢?现在看来,我们目前已有的知识的确没有什么好办法,不过这就难倒我们了吗?
正如我反复强调的,很多零碎的知识点老师无法都直接教给你们,需要我们碰到实际问题的时候再去补充,这时就需要我们发挥"搜索大法",主动搜索新知识。
这不,我们一下子就找到答案。(目前我们学习的是Python3)
原来print()函数里面有个参数'end'是用来控制换行行数和结尾字符。我们又来解决问题了,现在在刚才代码的基础上优化,让它打印不换行的效果。
但是这样子会发现,天啊真是磨人的小妖精,现在所有等式都挤在一行了 ==!
别愁,问题很好解决,这里教给大家一个小技巧,用print('')来控制换行。
到这里,离最后胜利只差一步之遥了!
我们可以代码是有规律的三行结构,同一结构重复了9次,这提醒我们可以用一层循环嵌套,来彻底解决重复劳动。
我们再来看九九乘法表,可以发现行数是固定的,范围是range(1,10),而列数(等式)则是逐行加一,即第N行就有N个等式。
基于上述已完成代码,你想到了如何用两层for循环消灭重复吗?
当然解法有很多,感兴趣的同学可以试试if和while的嵌套使用。
通过这个案例,你发现了吗,我们的解题步骤其实也是一个循环~所以当我们遇到复杂的题不要怂,学会拆解问题,找到突破口,就能一步步KO掉难题啦!
python教程python培训