Python-五、学习的两大瓶颈(通用知识)

1、先自我梳理

目前掌握了列表和字典,以及while循环和for循环。而且已经做了一些练习,现在的问题不再是我能不能学会Python,而是我怎么学号Python?

2、学习的两大瓶颈

知识学完就忘:学的时候记得,过一会就忘了。

缺乏理解能力:明明学会了,但做题的时候就不会了。

好比我们在学校上课时,明明老师讲的每个字都听进去了,但铃声一响,新学的知识就从脑袋里溜走了;复习到半夜,明明胸有成竹,但看到考卷的时候却一脸懵逼。

2.1、瓶颈1:知识学完就忘

在编程学习中,【掌握】知识和【记住】知识是两个概念:【掌握知识】是知道有这个知识点,并了解它该往哪用,而【记住知识】只是强行记忆知识点,但不一定知道怎么用,用在哪。

记住知识 ≠ 掌握知识

当你使用得足够多,你就会自然形成“肌肉记忆”,对使用场景和具体用法烂熟于心。

我们需要通过几类笔记法的运用掌握,帮助自己掌握知识点。

2.1.1、用法查询笔记

【用法查询笔记】解决的是“知识点是什么”的问题

记录知识点的基础用法,是自己的学习记录,便于自己快速查阅,加深对知识的印象。

笔记格式不限,目的就是方便自己使用。

例1,最简单的 “算数运算符” 相关笔记:

这张笔记是用小例子来说明不同算数运算符的用法,并且用注释说明了(1)代码含义(2)实际运行结果。 

例2,与“列表”相关的笔记:

记了一些对列表的常见操作

制作一份不同于课堂的案例,写出“代码含义”和“实际运行结果”的注释,这样才能加深对知识的第一印象,需要的时候才想得起笔记在哪。

例3,与“字典”相关的笔记:

字典

逐步积累,形成自己的【用法查询笔记】:


用法查询笔记

遇见有些课堂上老师没有涉及到的零碎知识点,也可以补充到笔记里,方便日后查看。

有了这些【查询使用笔记】,在学习新知识的时候,可以及时回顾已学知识。

在练习或实操的时候,可以快速查看某个知识的具体使用细节。

建议:搞一个可以自己往里面加知识点、并且可以快速搜索的开源技术博客之类的站点。

2.1.2、深度理解笔记

【深度理解笔记】更侧重解决“为什么要用”以及“怎么用这个知识点”的问题。

有些知识光有印象还不够,还需要知道这些知识该如何使用。所以我们需要【深度理解笔记】来总结、理解知识的使用场景。

深度理解笔记

思路是回答:

“什么时候需要用到这个知识?这个知识有什么常见用法?这个知识和其他知识有什么不同?”

之类的问题,并写下自己的思考过程。

案例1,列表和字典:

列表和字典的深度理解

深度理解笔记不是一蹴而就的,它会随着你对某一知识的理解程度的加深而不断完善。

所以,在练习和实操的过程中,积累更多的知识、运用技巧、实操经验,补充到深度笔记中去。

2.1.3、知识管理

如果你学Python学到“走火入魔”的话,你会发现【深度理解笔记】和【用法查询笔记】本质上就是一个“字典嵌套列表”,其中【深度理解笔记】是键,【用法查询笔记】是值。

知识管理结构

基于这个结构由点到面,再不断将新知识、经验循环往复的补充到自己的知识管理体系中去。

3、瓶颈2:缺乏解题能力

缺乏解题能力,也就是看到题目,隐隐中知道要用什么知识,但就是会像便秘一样死活卡住。

3.1、如何解题

一般分为五步,即:

1、看问题:分析问题,明确结果;

2、想办法:思考需要的知识,或搜索新知识;

3、找切入:思考切入点;

4、试切入:切入并尝试解决一部分问题;

5、重复直到解决问题。

案例,用Python打印九九乘法表:

1、看问题:当我们拿到这个问题时,首先思考这是什么问题呢?

要打印九九乘法表,我们知道九九乘法表最终是什么样子吗?

是下述的横着打印?

1 x 1 = 1,1 x 2 = 2,1 x 3=3 ?......

还是金字塔打印?

1 x 1 = 1

1 x 2 = 2,2 x 2 = 4

1 x 3 = 3,2 x 3 = 6,3 x 3 = 9

......

2、想办法:我们要用到哪些知识来解决这个问题。

首先很明显,要打印信息就必须用到最基本的print()函数。

最取巧的办法是像下面这样直接写,但显然这么操作太原始了。

print('1 X 1 = 1')

print('1 X 2 = 2 2 X 2 = 4')

print('1 X 3 = 3 2 X 3 = 6 3 X 3 = 9')

print('1 X 4 = 4 2 X 4 = 8 3 X 4 = 12 4 X 4 = 16')......

于是我们仔细观察,发现九九乘法表是有一定规律,重复的结构,所以可以想到用循环来处理。

同时,我们能看到数字是在灵活变动的,所以用“格式化字符串”来为变动的数字预留位置会方便些。

3、找切入:现在我们知道需要用的知识点,但我们该先从什么地方入手来解决这个问题呢?

九九乘法表,我们会发现一个规律:每一行的等式里,第一位数会递增,第二位数则会保持不变,并且在第几行就会有多少个等式。

九九乘法表是有规律的

4、试切入:我们尝试切入并解决一部分问题。

我们现在要用到循环,那么我们尝试用两次for循环在终端打印出:

1x2=2 2x2=4

1x3=3 2x3=6 3x3=9

如果只用循环,可能代码是这个样子的:

fori 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))

你需要坐九次这样的循环,而且要用'+'号去反复拼接数字和字符串。

那么我们可以尝试用格式化字符串来解决这个问题,格式化字符串怎么用?我们前面的【用法查询笔记】现在派上用场了。

知识:格式化字符串

于是,我们用循环和格式化字符串来打印九九乘法表,得出下代码:

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))

我们一运行,就发现结果长这样:

1x2=2;

2x2=2;

... ...

这不是我们上图中想要的结果,于是我们重复步骤1~4,将需要的结果更新,并开始思考新知识。

九九乘法表

于是去找百度问,百度告诉我。

百多搜索问题

原来print()函数里有个参数'end'是用来控制换行行数和结尾字符。于是我们继续尝试解决问题,优化上面的基础代码:

for i in range(1,3):

    print('%d X %d = %d' % (i,2,i*2),end = '  ')

for i in range(1,4):

    print('%d X %d = %d' % (i,3,i*3),end = '  ')

一运行,发现结果变成这样了:

1 X 2 = 2 2 X 2 = 4 1 X 3 = 3 2 X 3 = 6 3 X 3 = 9

太磨人了,咋办?只能找继续找度娘,深入理解print了。

于是我发现可以用print('')来控制换行,重新改了代码:

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('') #用来换行

终于输出了我想要的结果:

1 X 2 = 2 2 X 2 = 4

1 X 3 = 3  2 X 3 = 6  3 X 3 = 9

但是这样写出来的代码同样的结构要重复九次,跟搬砖差不多,我得想个法子优化这段代码。

再回来看看九九乘法表,我可以发现行数是固定的,范围是range(1,10),而列数(等式)则是逐行加一,即第N行就有N个等式。

于是决定使用for循环消灭重复,最终将代码缩到4行。

for i in range(1,10):

    for y in range(1,i+1):

        print('{0}x{1}={2}'.format(y,i,i*y),end = '  ')

    print(' ')#用来换行

用while循环和if结构尝试了一下,发现直观一点,但是代码要多一些。

i = 1

while i <= 9:

    j = 1

    while j <= i:

        print('%d X %d = %d' % (j,i,i*j),end = '  ')

        j += 1

    print('')

    i += 1

九九表做好了,完结撒花。

下面开始总结:

总结

练习2、 学习小组成绩的合并排序 :

练习目标

通过这个练习,掌握列表的两个新运用:合并列表和列表排序。

练习要求

一次测评中,老师将 学习小组A 和 学习小组B 的测评成绩(满分 100 分)从低到高记录放进两个列表:

A=[91, 95, 97, 99],B=[92, 93, 96, 98] 。

现在,老师想将两个小组的成绩合并为一个列表,并按照从低到高的顺序排序,你能帮老师完成吗?

思路:

列表嘛,可以用append()函数来新增列表的元素(一次一个),同时可以用for循环遍历列表里的元素。(可以考虑用经典的冒泡排序法)就用这个知识点,来完成列表合并和排序吧。

1、将列表合并起来,打印检查;(查了一堆资料,考虑使用列表长度来确定循环长度lenlist)

2、存到一张列表以后,使用冒泡排序法把当前的列表从低到高排序。

3、在百度以后,发现PYTHON直接有SORT参数,一行代码就搞定了,不用自己写方法,表示震惊。

代码:

list1 = [91, 95, 97, 99] 

list2 =  [92, 93, 96, 98]

for i in range(0,len(list2)):

    list1.append(list2[i])

list1.sort()

print(list1)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,730评论 0 8
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,323评论 0 2
  • Python 是一种相当高级的语言,通过 Python 解释器把符合语法的程序代码转换成 CPU 能够执行的机器码...
    Python程序媛阅读 1,889评论 0 3
  • 8月22日-----字符串相关 2-3 个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消...
    future_d180阅读 957评论 0 1
  • 2.相等运算符 3.is:同一性运算符 #避免将is运算符用于比较类似数值和字符串这类不可变值,由于Python内...
    mydre阅读 657评论 0 1