赞
踩
我的经验是:忘了就忘了吧,无所谓。等到要用的时候“临时抱佛脚”也是行得通的,毕竟编程是“开卷”的,你可以随时查阅。
究其原因,我们学编程是为了获得一门实用的技能。因此,所有的编程知识并不是要靠死记硬背来【记住】,而是自己真正吸收,学会【怎么用】。
在编程学习中,【掌握】知识和【记住】知识是两个概念:【掌握知识】是知道有这个知识点,并了解它该往哪用,而【记住知识】只是强行记忆知识点,但不一定知道怎么用,用在哪
Python涉及到的知识点是非常多的,即便把脑子塞爆也不可能都【记住】。所以在初期,很多知识只需要你在使用的时候有个印象,遇到不明确的,就去翻看学习记录,找到知识点的具体用法,再运行代码检验
一回生两回熟,当你使用得足够多,你就会自然形成“肌肉记忆”,对使用场景和具体用法烂熟于
那么,如何快速提高【掌握】知识的程度——既加深对知识的印象,又知道知识的使用场景呢?
在这里,我要和大家介绍一个对我而言很有效的学习方法:【案例笔记法】。它包括了两种类型的笔记:【用法查询笔记】和【深度理解笔记】。
听到“做笔记”这个词,你是不是想起了学生时代被老师支配的恐惧而瑟瑟发抖?
别慌,这【用法查询笔记】和【深度理解笔记】大有用处。
【用法查询笔记】就是记录知识点的基础用法,它是你的学习记录,能供你快速查阅,加深对知识的印象
要记住的是:不管你用什么格式记笔记,目的只有一个,就是 “方便自己查询使用”。
当然你可以多次登陆学习系统复习或者搜索相关教程,但这样可能要花一点时间才能找到想要的信息,所以将笔记统一记录在可随时查阅的文件里,不失为一个更便捷的好方法
我自己在初学编程的时候,非常重视在案例中理解、消化知识。因此,我的笔记会以案例居多。
比如先来看一个最简单的 “算数运算符” 相关笔记:(扫一眼就行)
这张笔记是用小例子来说明不同算数运算符的用法,并且用注释说明了(1)代码含义(2)实际运行结果。
其中代码含义往往用【#注释……】写在代码后面,实际运行效果往往用【# 》》注释……】写在代码下方。
这样注释的话会更直观,比如当要区分'%'和'//'用法的时候就能一目了然。
我们再来看看与“列表”相关的笔记,这里,我记了一些对列表的常见操作。
虽然课堂上我们也是以案例带出知识点,但老师还是建议你能在课后制作一份不同于课堂的案例,写出“代码含义”和“实际运行结果”的注释,这样才能加深对知识的第一印象,需要的时候才想得起笔记在哪。
最后,再来看看以 “字典” 知识为例的笔记,当然啦,要记什么内容取决于你对具体知识点的熟悉度。
除此之外,当你遇见有些课堂上老师没有涉及到的零碎知识点,也可以补充到笔记里,方便日后查看。
有了这些【查询使用笔记】,在学习新知识的时候,你可以及时回顾已学知识,在练习或实操的时候,你可以快速查看某个知识的具体使用细节。
于是,你的学习过程立马轻松了很多,因为很多知识并不要求自己直接记在脑子里,可以放到【用法查询笔记】中。
当然,“轻松”的意思,不是指我们可以在学习上摸鱼,而是让我们可以把更多时间精力花在关键之处。
说完了【用法查询笔记】,接下来我们看看【深度理解笔记】。
就像开头所说,有些知识光有印象还不够,还需要你知道这些知识该如何使用。所以我们需要【深度理解笔记】来总结、理解知识的使用场景。
【深度理解笔记】重在“理解”,所以笔记内容主要是记录对知识的理解。比如你可以看下我对于使用“循环”知识的理解笔记:
可以看到,如果说【用法查询笔记】解决的是“知识点是什么”的问题,那么【深度理解笔记】更侧重解决“为什么要用”以及“怎么用这个知识点”的问题。
通常来说,我们需要回答“什么时候需要用到这个知识?这个知识有什么常见用法?这个知识和其他知识有什么不同?”之类的问题,并写下自己的思考过程。
我们再来看一个关于列表和字典的例子:
当然,深度理解笔记不是一蹴而就的,它会随着你对某一知识的理解程度的加深而不断完善。
作为萌新,你可以尝试从“什么时候需要用到这个知识”记起,在后续练习和实操的过程,当你积累越来越多的时候,进一步补充笔记,比如补充这个知识的多种使用技巧。
如果你学Python学到“走火入魔”的话,你会发现【深度理解笔记】和【用法查询笔记】本质上就是一个“字典嵌套列表”,其中【深度理解笔记】是键,【用法查询笔记】是值。
基于这个结构,我们的知识框架就搭建起来了。因为我们有【深度理解笔记】,所以在解决一个编程问题的时候,我们可以轻易想到需要用到哪块知识,接着就可以去【用法查询笔记】里寻找相关的知识细节和具体案例,形成解题的思路。
在解决了问题之后,我们还可以把一些特别典型的案例,继续补充在【用法查询笔记】,是不是有点像以前上学时我们所做的错题集。
同样地,在解题的过程中,我们可能会专门搜索并自学一些额外知识,比如random模块(里面有许多随机函数)的使用方法,也可以一并记录在笔记里。
这样子,随着我们的知识库存越来越多,知识结构越来越完整,我们使用知识也会得心应手。
所以如果你发现自己是“学完即忘”的金鱼记忆体质,不妨试一试上述所教的笔记法。当然,第一步是不要怕懒哈哈。
看到题目,隐隐中知道要用什么知识,但就是会像便秘一样死活卡住
我认为这其中一个很重要的原因是还没有形成解题的思路,殊不知,解题技巧也是需要练习的。虽说解题思路是因人而异,但从中提炼共性的话,我会将解题步骤分为以下几步:
接下来,我会用一道经典的题目来详细解释上述步骤:用Python打印出九九乘法表。
分析问题是解决问题的第一步,所以拿到题目的时候我们首先要思考“这是一个怎样的问题”。
题目要求是“打印九九乘法表”,为了让问题变得清晰,我们得先知道“九九乘法表”长什么样,即我们最终想要呈现在终端结果是什么样。
假设我们的目标是在终端打印出这种格式的九九乘法表:
知道了需要实现的结果后,我们就来思考一下,解决这个问题到底要用到什么知识。
首先很明显,要打印信息就必须用到最基本的print()函数。
我们可以留意到,九九乘法表是有一定规律,重复的结构,所以我们可以想到用循环来处理。
同时,我们能看到数字是在灵活变动的,所以用“格式化字符串”来为变动的数字预留位置会方便些。
现在我们知道需要用到“循环”和“格式化字符串”相关知识,那我们就可以开始思考切入点:先从什么地方入手来解决这个问题。
我们再来观察九九乘法表,我们会发现一个规律:每一行的等式里,第一位数会递增,第二位数则会保持不变,并且在第几行就会有多少个等式。
也就是说,每一行其实都可以是一个小循环,那我们就可以以此为切入点,先把每一行的小循环写出来,再进一步寻找规律。
记住从简单的切入点入手,解决一部分问题,往往会让问题变得更简单,更容易被解决。
分别用for循环打印出九九乘法表的第二行和第三行
- #题目要求:用两次for循环在终端打印出:
- 1 X 2 = 2 2 X 2 = 4
- 1 X 3 = 3 2 X 3 = 6 3 X 3 = 9
- for i in range(1,3):
- print(str(i) + ' X 2 = ' + str(i*2))
-
- for i in range(1,4):
- print(str(i) + ' X 3 = ' + str(i*3))
你会发现字符串只能与字符串用'+'号拼接,要拼接数字的话还得先用str()转换,煞是麻烦。所以用我们刚才所说的格式化字符串处理会轻松得多。
这时,之前讲的【用法查询笔记】也能派上用场了。
所以,刚刚的那段代码就可以写成:
- for i in range(1,3):
- print('%d X %d = %d' % (i,2,i*2))
-
- for i in range(1,4):
- print('%d X %d = %d' % (i,3,i*3))
但是,运行后你会发现这样写的话每一个等式都会换行,而我们想要的结果是:
解决问题的时候发现了新的问题,所以,我们回到第2步重新思考:
很多零碎的知识点老师无法都直接教给你们,需要我们碰到实际问题的时候再去补充,这时就需要我们发挥“搜索大法”,主动搜索新知识。
点进链接,我们一下子就能找到答案。(目前我们学习的是Python3)
原来print()函数里有个参数'end'是用来控制换行行数和结尾字符
- print('hello',end='')
- print('world')
-
- print('hello',end=' ')
- print('world')
-
- print('hello',end='!')
- print('world')
- #》》helloworld
- #》》hello world
- #》》hello!world
我们又要来尝试解决问题了。现在请在刚才代码的基础上优化,让它打印出不换行的效果。
- for i in range(1,3):
- print('%d X %d = %d' % (i,2,i*2),end = ' ')
- print('') #用来换行
- for i in range(1,4):
- print('%d X %d = %d' % (i,3,i*3),end = ' ')
- print('') #用来换行
答案是这样子:
- for i in range(1,10):
- for j in range(1,i+1):
- print( '%d X %d = %d' % (j,i,i*j),end = ' ' )
- print(' ')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。