随笔:code.org和python

随便写点,保持更新。

夏令营给学生讲python,结合code.org课程。

code.org中课程3和4内容比较类似,但是课程3不涉及变量内容,课程4则涉及了变量,函数等相对更加复杂的内容。

考虑到学生基础薄弱,直接讲解python上手难度比较大,所以让学生先闯关,了解顺序执行、循环、判断、函数以及在循环中使用函数、有参数的函数等内容,然后再对照已经编写的代码块,编写程序。如下图所示:


随笔:code.org和python_第1张图片
image.png

学生掌握了turtle基本命令之后,对照下面图形化的程序翻译成python代码。学习书法先临摹,这样看上去很浪费时间,但是大部分同学对于程序的掌握效果比较好。

在涉及到变量的时候,图形化中直接拖拽,但是python中,学生容易把变量名和字符串混淆,写出

length = 20
fd('length')

这样的代码,其实,在极客战记计算机科学2/3中学生也会犯类似的错误,对于变量的含义理解不够准确,一是确实比较难,相对抽象,二是讲解的不够清晰,但是对照图形化程序,学生在理解起来的障碍小了许多。


随笔:code.org和python_第2张图片
image.png

这个程序是六年级的小朋友写的,当然这个小朋友有信息学奥赛的基础。其他同学话费时间也都能做出来,有几个关卡,学生因为事先闯关了,写python代码比我快的多。几个高中生还能举一反三,写出不同的程序,思路很快,表示很欣慰。而且学生下课不想走,不再是因为玩儿游戏,而是想写程序(也可能是因为新的教室有空调)。


image.png

学生做出来也会玩儿的比较开心。
随笔:code.org和python_第3张图片
image.png

小家伙开学五年级,我本来打算让他画右侧的三个三角形,结果他嵌套了3个for循环,把整个图形画出来了。


随笔:code.org和python_第4张图片
image.png
随笔:code.org和python_第5张图片
image.png

未知图形。

然后,让所有学生,自己写出每关对应的python代码,比较顺利。


随笔:code.org和python_第6张图片
image.png

今天还熟悉了live coding,对于基于FoxDot的音乐编程有了初步的了解,SuperCollider是当前免费音乐编程软件的基础,SuperCollider本身语法会晦涩,但是基于python包装的FoxDot则非常简单易用,对SuperCollider中的各种函数进行了非常好的包装,体现了python作为函数语言的优势,如《流畅的python》一书中详细介绍的,python自定义的数据类型可以跟系统自带的数据类型有相同的操作,因为在横向上,python定义了一系列的模式方法,可以让自定义的数据类型,拥有跟内置类型完全相同的操作,len、str以及加减乘除、遍历等操作,可以方便的通过魔术方法实现,所以FoxDot为自定义的数据类型player对象,借用原来的位操作符>>>,实现了简洁到极点的代码,还用到了Python中列表的一些特性。

随笔:code.org和python_第7张图片
image.png

比如任意自定义的数据类型,只要定义了 __bool__方法,就可以用 bool()方法返回 bool()方法返回 True或者 False,自己实现相关的逻辑;再比如,只要定义了 __len__方法,就可以用内置的 len()方法返回数据的长度, 《流畅的Python》中用的是纸牌的例子。

再次想到lisp语言,lisp语言非常神奇,是数学家发明的编程语言,虽然我们说编程的基础是数学,但是现在很多编程语言是工程师发明的,很多语言,核心很简单,库非常多,非常强大,像是用拖拉机发动机驱动航天飞机,比如Fortain,而lisp,核心就很强大,也很容易扩展,就像欧式几何,用几条简单的公理就可以扩展出整个系统,自己造轮子非常容易,自由度非常大,造轮子非常的方便,具体可以参考《黑客与画家》一书。

随笔:code.org和python_第8张图片
image.png

python中有很多借鉴lisp的特性,但是连lisp的缺点也借鉴了。python中定义加减乘除灯运算符、函数的语法是不同的,而在lisp中,运算符、函数的定义语法是相同的,比如:

(+ 1 2)
(add 1 2)

+号是运算符,add是自定义的加法函数,形式高度统一,非常方便的,一层层的构建函数,构建不同层次的抽象,底层的语言构建上层语言,然后用上层语言构建更加抽象的语言,就像是,c到python库,到python代码,到图形化等等,反正这些东西了解一下是非常有意思的,看来自己还不是真的了解,因为说的并不透彻。

我们教学的时候,用图形化,其实屏蔽了很多细节,随着教学的展开,逐渐的把更多的细节暴露给学生,比如上面随机颜色的实现,然后是python,大部分学生,学到turtle就够用了,但是,也许还有同学会深入到tkinter,深入到tcl语言,深入到c语言和操作系统,这时候,他可能已经是计算机专业的学生了。

下笔千言离题万里。

你可能感兴趣的:(随笔:code.org和python)