[推荐]轻量好用学习python的工具--​-Thonny​

2023-05-16

青少儿编程教育的三大语言,图形化编程、Python编程和C++语言编程。图形化语言(Scratch)和C++语言(Dev C++)的编程工具相对比较固定,而Python编程工具比较多样,像比较入门的Mu Editor,项目在用的Pycharm、Pydev等等,每个编程工具都有自己的特点和优势,同样也有自己的不足,没有什么万能的工具,只有针对使用场景更适合的工具。那么针对于青少年学习Python,更适合的是什么学习编程工具呢?

青少年的编程工具要有几个特点:

  1. 简单入手,直观易用。
  2. 交互直观,即时反馈。
  3. 不光是用编程,作出编程项目,还要有利于弄懂编程过程及原理。
  4. 更有利于向更高级复杂的工具顺利过渡。

比较了很多编辑器之后,最终选定,更适合青少年的可能就是它了-Thonny。

Thonny 由爱沙尼亚的 Tartu 大学开发,它的调试器是专为学习和教学编程而设计的,针对初学者学习Python语言优化了很多工具上的方式和方法,下面就是典型的使用Thonny时的界面。

Thonny界面

选择Thonny作为更适合青少年学习Python的软件,它针对青少年学习有以下几个亮点:

  • 开箱即用,简单上手。

Thonny有Windows、Mac、Linux和树莓派等各平台版本,下载后直接安装即可使用。首次打开软件,可以选择语言,自带中文。Thonny在安装时就自带了Python3的解释器,不用再折腾Python的环境,就可以马上打开软件开始写代码。这对于青少年来说降低了很多写“Hello World“的门槛,把更多的精力用在学习编程语言和做编程作品上。

  • 实时反馈程序运行过程,调试时显示变量值和函数调用过程。

调试的时候显示变量的值。例如在循环运行的过程中,可以在代码中直接高亮显示当前变量的值,让学生更容易了解变量的变化和计算过程。更直观的让学生理解循环及变量。

调试时,直观显示函数的调用过程。例如在递归的算法中,学生经常被循环调用函数搞糊涂,Thonny在调用函数时,直接弹出调用函数窗口,显示当前的调用参数是多少,返回值多少,直观的让学生了解函数时如何调用的及算法过程。

函数调用过程窗口

  • 支持REPL交互。

REPL是解释语言的优势,在交互中探索编程,这就像Scratch图形化中单个运行的积木模块,可以实时反馈交互的运行结果。Thonny默认界面Shell中随时等待用户输入命令用于编程。特别是Thonny的界面就是IDLE命令行模式和写代码模式的组合体。上半部分的代码编辑器可以写大块的程序用于运行,下面是命令行用于小段代码测试。这给学生一个自由的创作空间,而不是两者取舍。

Mu Editor也有Shell窗口,但在REPL过程中用了In、Out这样的提示符,感觉不太干净利落。特别是在程序出错时,Mu Editor只打印相关的错误信息,Thonny可以直接点击错误信息,直接到达错误行,直接修改程序即可。

  • 简单易用的包管理器。

Mu Editor的分模式窗口也是非常好的一个亮点,但是最终让我不选择Mu Editor的是它的包管理器。个人感觉Mu Editor的包管理器还不够好,缺少了“搜索”这一步骤。Thonny的包管理器可以图形化的搜索第三方包,然后进行加载并管理。这对于Python学习的特点之一(可以使用成千上万的优秀第三方包)来说,这一点能培养学生自己扩展和使用第三方包的能力,用于自主创新和实践。

  • 更好的支持Microbit等硬件开发。

Thonny也良好的支持Microbit、ESP32和树莓派等的开发。在Python的解释器中选择不同的解释器,Thonny就会自动切换不同的开发模式,以方便当前硬件的开发。

  • 承上启下,顺利向PyCharm等复杂编辑器过渡。

Thonny不仅简单易用,还有很多复杂编辑器的功能,比如项目文件管理、输出图形化展示器、大纲显示函数、异常处理等等功能。这对以后可以顺利过渡到Pycharm这样的软件做了一个很好的铺垫。

Thonny还有其他一些小的优化点:

  • 针对Turtle的优化。自带Turtle,可以直接引用并窗口显示绘制的图形,绘制图形窗口还可以固定位置和最前显示,方便一边调试一边显示。

Thonny利用Turtle库绘图

  • 变量作用域用不同的字体显示。局部变量用斜体显示,让学生更好的区分变量的作用域。

  • 显示堆模式。这个模式也非常好,打开堆窗口,自动切换到堆模式,引用变量显示的不再是具体的值,而是内存地址。堆模式可以让学生直观理解引用内存地址,实参和形参的区别。

Thonny堆模式

  • 简单UI模式。在设置中,可以用Simple UI模式,只剩下工具栏、代码编辑器和Shell,简洁界面让学生无压力,更聚焦编程语言的学习。

Thonny针对学习Python(而不仅仅是用Python)而设计的诸多优化点,更好的让学生理解代码运行、深入计算机交互和使用语言完成任务。

Thonny官网:Thonny, Python IDE for beginners

相关论文:

  • Thonny, a Python IDE for learning programming (poster paper at ITiCSE'15)
  • Introducing Thonny, a Python IDE for learning programming (short paper at Koli Calling'15)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[推荐]轻量好用学习python的工具--​-Thonny​ 的相关文章

  • Django 中的 Rpy2 错误 - 未为“”类型的对象定义转换“py2rpy”

    我以前从未使用过 R 并且正在尝试使用 rpy2 从 python 调用 R 函数 它可以在独立的 python 终端上运行 但不能在 Django 中运行 但rpy2似乎无法将python字符串转换为r对象 我正在使用同事提供的自定义库
  • Python 子进程(ffmpeg)仅在我按 Ctrl-C 程序时启动?

    我正在尝试使用 Cygwin 和 Python 2 7 并行运行一些 ffmpeg 命令 这大概是我所拥有的 import subprocess processes set commands ffmpeg i input mp4 outpu
  • 在 pandas 中单独打印一列的原始值?

    我有一个数据框 df pd DataFrame name george age 23 name anna age 26 现在我想检索乔治的年龄 df df name george age 但这会输出一些额外的信息以及原始值 0 23 Nam
  • 无法使用 BeautifulSoup 和 Requests 抓取下拉菜单

    我想抓取百年灵网站上的产品页面以获取各种信息 示例页面 https www breitling com gb en watches navitimer b01 chronograph 46 AB0127211C1A1 https www b
  • 使用 pandas 将字符串对象转换为 int/float

    import pandas as pd path1 home supertramp Desktop 100 life 180 data csv mydf pd read csv path1 numcigar Never 0 1 5 Ciga
  • 将一维数组转换为下三角矩阵

    我想将一维数组转换为较低的零对角矩阵 同时保留所有数字 我知道numpy tril函数 但它用零替换了一些元素 我需要扩展矩阵以包含所有原始数字 例如 10 20 40 46 33 14 12 46 52 30 59 18 11 22 30
  • 在Python中以交互方式执行多行语句

    我是 Python 世界的新手 这是我用 Python 编写的第一个程序 我来自 R 世界 所以这对我来说有点不直观 当我执行时 In 15 import math import random random random math sqrt
  • reStructuredText:README.rst 未在 PyPI 上解析

    我有一个托管在 Github 和 PyPI 上的 Python 项目 在 Github 上 https github com sloria TextBlob blob master README rst https github com s
  • 返回上个月的日期时间对象

    如果 timedelta 在它的构造函数中有一个月份参数就好了 那么最简单的方法是什么 EDIT 正如下面指出的那样 我并没有认真考虑这一点 我真正想要的是上个月的任何一天 因为最终我只会获取年份和月份 因此 给定一个日期时间对象 返回的最
  • 根据第三个变量更改散点图中的标记样式

    我正在处理多列字典 我想绘制两列 然后根据第三列和第四列更改标记的颜色和样式 我很难改变 pylab 散点图中的标记样式 我的方法适用于颜色 不幸的是不适用于标记样式 x 1 2 3 4 5 6 y 1 3 4 5 6 7 m k l l
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 线性同余生成器 - 如何选择种子和统计检验

    我需要做一个线性同余生成器 它将成功通过所选的统计测试 我的问题是 如何正确选择发电机的数字以及 我应该选择哪些统计检验 我想 均匀性的卡方频率测试 每代收集10 000个号码的方法 将 0 1 细分为10个相等的细分 柯尔莫哥洛夫 斯米尔
  • 根据列索引重命名 Dataframe 列

    是否有内置函数可以按索引重命名 pandas 数据框 我以为我知道列标题的名称 但事实证明第二列中有一些十六进制字符 根据我接收数据的方式 我将来可能会在第 2 列中遇到这个问题 因此我无法将这些特定的十六进制字符硬编码到 datafram
  • Python 导入非常慢 - Anaconda python 2.7

    我的 python import 语句变得非常慢 我使用 Anaconda 包在本地运行 python 2 7 导入模块后 我编写的代码运行得非常快 似乎只是导入需要很长时间 例如 我使用以下代码运行了一个 tester py 文件 imp
  • 如何使用 os.chdir 转到减去最后一步的路径?

    例如 一个方法传递了一个路径作为参数 这个路径可能是 C a b c d 如果我想使用 os chdir 更改为 C a b 怎么办 c 没有最后一个文件夹 os chdir 可以接受 命令吗 os chdir 可以采取 作为论点 是的 然
  • 在 Python 中访问 argparse 的参数值

    我正在尝试为我的程序设置一些简单的标志参数 但无法弄清楚如何访问它们 我有 argparser parser argparse ArgumentParser description Simple PostScript Interpreter
  • Python:无法使用 os.system() 打开文件

    我正在编写一个使用该应用程序的 Python 脚本pdftk http www pdflabs com tools pdftk the pdf toolkit 几次来执行某些操作 例如 我可以在 Windows 命令行 shell 中使用
  • 如何使用 Python 3 正确显示倒计时日期

    我正在尝试获取将显示的倒计时 基本上就像一个世界末日时钟哈哈 有人可以帮忙吗 import os import sys import time import datetime def timer endTime datetime datet
  • 在python中对列表列表执行行总和和列总和

    我想用python计算矩阵的行和和列和 但是 由于信息安全要求 我无法使用任何外部库 因此 为了创建矩阵 我使用了列表列表 如下所示 matrix 0 for x in range 5 for y in range 5 for pos in
  • Python 中的字符串slugification

    我正在寻找 slugify 字符串的最佳方法 蛞蝓 是什么 https stackoverflow com questions 427102 in django what is a slug 我当前的解决方案基于这个食谱 http code

随机推荐

  • Scene-Graph-Benchmark.pytorch服务器部署

    未采用md编辑 xff0c 望见谅 目录 序言 部署 数据集制作 数据准备 xff1a VG数据集 数据转换 xff08 参考issue xff09 预测 xff08 还未使用模型预测 xff0c 后续添加 xff09 引用 xff08 T
  • [Ubuntu] Argument list too long的问题

    问题溯源 在使用rm rf时 xff0c 文件夹内部大概有4万多的图像文件 xff0c 造成列表长度过长 xff0c 无法删除 此时参考了强哥大佬使用管道 及xarg的方法顺利完成 span class token operator spa
  • ORC识别

    OCR xff08 Optical Character Recognition 光学字符识别 xff09 是指对输入图像进行分析识别处理 xff0c 获取图像中文字信息的过程 xff0c 具有广泛的应用场景 xff0c 例如场景图像文字识别
  • 解密Apache HAWQ ——功能强大的SQL-on-Hadoop引擎 [作者:常雷]

    作者 xff1a 常雷 博士 xff0c Pivotal中国研发中心研发总监 xff0c HAWQ并行Hadoop SQL引擎创始人 xff0c Pivotal HAWQ团队负责人 xff0c 曾任EMC高级研究员 专注于大数据与云计算领域
  • cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-wwma2wne\opencv\module

    可能图片路径中有中文 xff0c 比如在桌面 xff0c 当然和转义字符也有问题 xff0c 用windows的多试下 39 r和 中文路径改用 img 61 cv2 imdecode np fromfile img dtype 61 np
  • Permission denied: ‘.xls‘

    先把打开的xls关掉
  • yolov5模型框架详解

    yolov5和yolov4很像 Mosaic数据增强 1 每次读取四张图片 2 分别对四张图片进行翻转 缩放 色域变化等 xff0c 并且按照四个方向位置摆好 3 进行图片的组合和框的组合 随机缩放 随机裁剪 随机排布的方式进行拼接 xff
  • detectron2 ImportError: cannot import name ‘_C‘ from ‘detectron2‘

    在detectron2 中执行 python setup py build develop 即可
  • LSTM+attention代码原理详解

    本文将LSTM 43 attention用于时间序列预测 class lstm torch nn Module def init self output size hidden size embed dim sequence length
  • bash: export: not a valid identifier

    export 后面存在空格 xff0c 去掉即可
  • linux安装opencv

    安装 1 准备工作 1 1C C 43 43 编译环境配置 Linux系统下使用C 43 43 开发OPenCV项目 xff0c 先要搭建C C 43 43 开发环境 在终端输入 xff1a sudo apt install gcc sud
  • 模型的并行推理

    ONNX模型可以通过使用深度学习框架的多卡并行化功能来实现GPU多卡推理 以PyTorch为例 xff0c 可以使用DataParallel或DistributedDataParallel来进行多卡并行化 DataParallel可以在单个
  • python队列

    q get 在队列为空时会阻塞 q put 在队列满时会阻塞 get nowait 在队列为空的时候也不阻塞 xff0c 这时候会抛异常queue Empty put nowait 1 在队列满的时候也不阻塞 xff0c 这时候会抛异常qu
  • python queue【队列的阻塞】

    队列的阻塞分为 xff1a 入队 put 时的阻塞 出队 get 时的阻塞 整体 join 的阻塞 消费的阻塞 出队阻塞 注 xff1a 设置 timeout 超时时间 xff0c 并捕捉 queue Empty 异常 xff1b 设置to
  • 微策略春招面试总结

    春季招聘时我报的研发岗 xff0c 由于我不是杭州本地人 xff0c 故首先接到的是电话面试 xff0c 电话面试大概一周左右被通知去杭州总部面试 下面主要简述一下面试的内容 第一面是技术面 xff0c 大概持续近一个小时 首先面试官会照着
  • Java JSONArray for循环 remove成员的一个好算法(转载)

    来源 xff1a https www cnblogs com xiaoliao p 10415214 html parameterArray 61 34 boundingBox 34 34 29 28 401 29 399 85 27 84
  • ExecutorService 关闭 and 如何判断线程池中任务执行完毕

    ExecutorService 关闭 1 shutdown 2 shutdownNow 3 awaitTermination 当你使用 ExecutorService的时候 xff0c 你应该记得关闭它 xff0c 这样这些被管理的线程才会
  • Ubuntu下启动图形界面startx报错connection to X server lost

    服务器被重启之后startx无法进入图形界面 xff0c 训练数据也全丢了 按以前应对这个问题的步骤重新走了一遍还是不行 就是各种网上找的杂七杂八的办法 xff0c 于是想起之前用x2go client登录图形界面ok的 xff0c 然后去
  • C语言环形队列缓冲-FIFO_RingBuffer

    ring buffer h span class token macro property span class token directive hash span span class token directive keyword if
  • [推荐]轻量好用学习python的工具--​-Thonny​

    青少儿编程教育的三大语言 xff0c 图形化编程 Python编程和C 43 43 语言编程 图形化语言 xff08 Scratch xff09 和C 43 43 语言 xff08 Dev C 43 43 xff09 的编程工具相对比较固定