昨天,我采访了一个四年级的孩子,主要问了一些他是如何起步学习编程的,以及在学习的过程中碰到的一些问题是如何解决的。
为什么要做这样一件事情呢,是因为另外一个三年级的孩子,也在学python编程,但是碰到一些困难,我想同龄的孩子的话语应该会更有说服力,也能更加给他一些参考的意义,也收集了一些他想问的问题。
昨天晚上我把采访的视频以及他的两段写代码过程视频发给了另外一位学生,希望能够给他带去一些帮助。
先说说孩子当前的学习情况,他是去年10月份开始学习 python 的,他的爸爸给他找的学习内容是网上的 python-100-days ,用的编辑器是 PyCharm;三个月后找到我,让我给他上课,说他目前常用的基础知识(分支语句和循环语句)和基础数据结构(元组,列表,字典,集合等)都已经学过了。
我给他出了一套考题,他直接手写答案,看了一下,基本上都对了,让我很好奇,4年级的孩子就能达到这个水平了?直到我给他上了几节课我终于信了。
按照他当前的水平。我给他设计了一个学习路线,给了很多方向让他选择,当前第一期主要在学习图像处理,后面他说想学爬虫,网站开发,GUI,这个由他自己选择。
在上了一段时间后,我对比其它学习编程的人,发现他能有当前的水平,确实是有道理的。
采访问题(选了几个):
问题1:你喜欢玩游戏吗?当你拿到电脑的时候,你最想做什么?
回答:还可以,不过一般都没有机会拿到电脑,拿到电脑时都是有任务的,要不上学科的网课或者学一些编程知识。
问题2:你为什么想要学习编程?
回答:开始是爸爸教他一些基础的,后面觉得编程很好玩,很喜欢,开始自己学习探索。
问题3:你理解的编程是怎样的?你平常会自己做一些作品吗?
回答: 我觉得编程就是用一些功能指令拼搭在一起,实现一些特定的功能。最近用 pygame 做了一个打字游戏。
有4种模式,每种模式出现字母的速度不一样,字母会逐渐增多,直到按下正确的字母会消失,看你的打字速度怎么样。
作品源码在最后。
问题4:学习编程的过程中,碰到过那些比较难的问题,是怎么解决的?
回答:1.可能就是我想实现一个功能,没有对应的函数或者我根本不知道哪个函数。积累和搜索。
2.打字比较慢,打字用金山打字练了10天,前3天比较集中,后面有时间就练习,然后多敲代码。
3.英语单词不认识,报错也不认识。开始爸爸会和他讲,多错几次后面就认知了,后面就是自己桌面准备了一个字典,随时查阅,然后多练习,在练习中加深记忆和理解。
问题5:每天编程学习和学校学习是怎样安排时间的?
回答:每天学校作业留到集中完成,白天在学校课间抓紧写作业,尽量把作业都在学校写完,每天中午基本上都会编30分钟,周末没有多少时间,还要上其它的辅导课。
从他的回答中,我觉得他能学好有几个非常关键的几个点:
- 前期爸爸引导的非常好,让他学会自己看懂基本的报错,知道怎样去定位出错的位置以及改正,减少了依赖性。
- 学习方法好,多练,练习中记忆和理解。
- 自驱力强,具备一定的自学能力了。后面其实已经在自学了,会网上找资料学习,能够看懂很多文章的讲解以及看书学习。
给他上课之前,爸爸就要求多带他学习如何找资料,碰到问题如何解决的,以及如何去看文档等等。
上课也会给他一些框架性结构,帮助他更好掌握系统性知识,让他知道不管多复杂的问题都是有一定的步骤的。
现在每次给他上课前都会给他分享我最近做的一些作品以及我的一些思路,多给他一些启发。
有时候觉得小孩子的学习方法更加灵活,简单有效,没有什么套路;学习态度和能力甚至超过一些成人。
作品原名:人工智能——打字游戏.py
代码语言:javascript复制import pygame, sys, time, random
mode_ask = input('请输入模式(easy,medium,difficult,super):')
print('n游戏正在启动,请稍后……')
pygame.init()
screen = pygame.display.set_mode((800, 300))
pygame.display.set_caption("打字游戏")
myFont = pygame.font.SysFont(None, 200)
mode = {'easy': 1, 'medium': 0.5, 'difficult': 0.25, 'super': 0.125}
letterlist = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
"u", "v", "w", "x", "y", "z"]
numlist = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
letterWait = []
t1 = time.time()
while True:
for event in pygame.event.get():
# 退出游戏
if event.type == pygame.QUIT:
pygame.quit()
print('感谢参与!!!n' * 3)
sys.exit()
# 删除字母
if len(letterWait) > 0 and event.type == pygame.KEYDOWN:
for letter in letterWait:
if event.key == ord(letter):
letterWait.remove(letter)
t2 = time.time()
try:
if t2 - t1 > mode[mode_ask]:
# 如果打字等待了1秒(未输入),就添加一个字母
t1 = t2
l1 = random.choice(letterlist)
letterWait.append(l1)
except KeyError:
print('模式输入有误')
sys.exit()
screen.fill((100, 100, 100))
n = len(letterWait)
for i in range(n):
x = 100 i * 100
y = 100
l2 = letterWait[i]
color = (0, 255, 255)
textImage = myFont.render(l2, True, color)
screen.blit(textImage, (x, y))
pygame.display.update()
(全文完)
欢迎转载,转载请注明出处!