随便写点,保持更新。

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

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

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

image.png

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

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

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

image.png

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

image.png

学生做出来也会玩儿的比较开心。

image.png

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

image.png

image.png

未知图形。

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

image.png

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

image.png

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

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

image.png

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

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

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

下笔千言离题万里。

python lisp_随笔:code.org与python,FoxDot,Lisp相关推荐

  1. vscode python插件_黄哥Python:VS Code 10个Python 插件

    转载自https://medium.com/issuehunt/10-visual-studio-code-extensions-for-python-development-de0be51bbeed ...

  2. visual studio code Python终端运行_黄哥Python:VS Code 10个Python 插件

    转载自 https://medium.com/issuehunt/10-visual-studio-code-extensions-for-python-development-de0be51bbee ...

  3. vscode开发python使用教程_在VS Code上搭建Python开发环境的方法

    web-based installer 在线安装 executable installer exe安装 embeddable zip file 内嵌版本 3.在VS Code里安装 python 插件 ...

  4. 微软 python_微软推出 Pylance,改善 VS Code 中的 Python 体验

    微软宣布推出一种新的 Python 语言服务器,名为 Pylance,其可利用语言服务器协议与 VS Code 进行通信.Pylance 这个名字是对 Monty Python 的 Lancelot ...

  5. jupyter notebook python插件_VS Code Python 将支持 Jupyter Notebook

    9 月 21 日,在 PyCon China 2019 上,来自微软开发工具事业部的资深研发工程师韩骏宣布了一项 VS Code Python 的全新功能:Visual Studio Code Pyt ...

  6. 微软推出 Pylance,改善 VS Code 中的 Python 体验

    源自:编程派 微软宣布推出一种新的 Python 语言服务器,名为 Pylance,其可利用语言服务器协议与 VS Code 进行通信.Pylance 这个名字是对 Monty Python 的 La ...

  7. visual studio code Python终端运行_VS Code 6 月 Python 扩展更新

    优质文章,第一时间送达! 微软发布了 6 月的 Visual Studio Code Python 扩展更新,此版本除了解决 53 个问题外,还开发了新功能,例如逐行运行和启动页面. 逐行运行(Run ...

  8. 在visual studio code中配置python以及解决中文乱码问题

    安装好 visual stuido code (下面简称 " VSC ")后,要想使用它运行调试 python 代码还需要做一些工作以解决下列问题: 搭建 python 环境 pr ...

  9. github怎么搜索开源的代码_5.2.PYTHON开发利器之使用VS Code+GitHub进行python开源项目开发...

    上一节介绍了使用vscode+Git进行python程序版本控制,详见5.1.PYTHON开发利器之使用VS Code+Git进行python程序版本控制 0.前言 GitHub是目前最大的开源代码托 ...

  10. vscode配置python2和python3_VS Code中配置python版本以及Python多版本

    VS Code中配置python版本 VS Code十分方便配置python的版本: 可以选在在本地setting.json或者全局setting.json文件中配置: python.pythonPa ...

最新文章

  1. 在Intelij IDEA中修改maven为国内镜像(阿里)
  2. jsp页面修改成html页面
  3. Apriori算法简介及实现(python)
  4. Jedis的Spring配置
  5. C#之foreach语句
  6. linux源码文件名,Linux中文件名解析处理源码分析
  7. 马斯克的星链计划对互联网有哪些影响?
  8. 重装 Windows 7 系统后电脑出现乱码怎么办
  9. Kotlin — 使用IDEA运行第一个Kotlin程序,打印“Hello World”!
  10. 把Unity的jdk环境添加到环境变量
  11. 阿里巴巴Java性能调优实战(2021华山版)
  12. Python实现读写txt文件的方法
  13. java使用itextpdf生成 pdf (支持table)分页
  14. STM8L的LCD接口详解及驱动程序
  15. 7-5 厘米换算英尺英寸
  16. 动图ps在html不动,教你如何用ps把动态图片加到静态图片上
  17. 软件测试 | 测试开发 | Git分支管理搞定在线合并和本地合并
  18. 分布式数据库技术金融应用规范3项标准出炉,巨杉数据库参与制定
  19. 拼多多校招内推编程题1 最大乘积
  20. 如火如荼的「云原生」,你了解多少?

热门文章

  1. 黑盒测试——因果图法
  2. python中sys是什么意思_python里的sys是什么意思
  3. windbg 常用调试命令总结
  4. 高项、高级项目管理师论文-人力资源管理
  5. Cydia怎样添加威锋源
  6. 【记一下1】2022年6月29日 哥和弟 双重痛苦
  7. 互联网大数据中标签的类型
  8. java.io的缓冲流、转换流、序列化流
  9. stm32 IAP 程序编写心得
  10. 掌中革命--手机富媒体