如何直观地理解程序的运行过程?

了解代码的执行过程是编程的基本要求。一个熟练的编程老手只需要用肉眼看着代码,就能对其运行的过程有所了解。然而对于刚接触编程不久的新手来说,这种事情就没那么显而易见了。于是在编写代码和调试代码时,一旦程序的逻辑有些复杂,就像掉进代码的迷宫,完全不知道东南西北。

所以,每当有人对自己的代码没有给出预想结果而百思不得其解,无奈寻求帮助时,我都会建议在程序中增加输出,一方面是根据不同输出的先后顺序来判断程序的运行路径,另一方面则是观察各变量在运行过程中的实际数值,确认是在哪里发生了错误。

还有种方法就是使用 IDE 提供的调试功能,通过添加断点和单步运行,了解程序的运行状态。Visual Studio、Eclipse、xCode 等常见的 IDE 几乎都提供了调试工具。对于 Python,也可以使用 pdb 库来实现断点调试。

上述两种途径应该是大部分程序员 debug 时候的基本套路。但同样的,对于新手来说,即使这样的工具,用起来仍然有些费力。

有时我会选择在纸上画出一些流程和图形来向人解释程序,虽然效果会好些,但显然不是一种可以广泛推广的方式。后来意外发现有一款工具满足了此类需求,非常适合新手,可以让你直观地“看”出程序是怎么运行的。对于初学编程,难以理解程序运行过程的苦手来说,绝对可称之为“神器”。

这就是 Online Python Tutor。一款免费的在线代码运行及演示工具。

项目地址:pythontutor.com

关于此项目的介绍(摘自网络,出处未知):

Online Python Tutor 是由 Philip Guo 开发的一个免费教育工具,可帮助学生攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。通过这个工具,教师或学生可以直接在 Web 浏览器中编写 Python 代码,并一步一步可视化地执行程序。

截至 2013 年 12 月,来自 165 个国家和地区共 50 万多人使用了这个在线工具,通常是用作教材、讲义或在线编程指南的补充。每天共执行和演示超过 6,000 段 Python 程序。除了自学的初学者,Online Python Tutor 的用户还包括了那些参加 Coursera、edX 和 Udacity 等在线课程的学生,还有诸如 MIT、UC 伯克利等高校的教师。

  • Python Tutor 支持 2.7 和 3.3 两个版本的 Python。

  • 除了 Python 外,还可运行 Java、JavaScript、TypeScript、Ruby,另外也有支持 C、C++ 的版本。

  • 可以通过一行 JS 代码,把此工具嵌入到你自己的页面中。

  • 也可以生成链接,把你的代码直接分享给别人。

  • 附带单元测试功能。

  • 网站上还提供了很多的实例,其中包括一些比较经典的算法。

再来体验一下其使用过程:

在编辑器里输入代码,点击 “Visualize Execution” 即可运行并演示。

import randomdef fn(x):    return x**2result = []for i in range(3):    t = random.randint(1, 10)    print t    r = fn(t)    result.append(r)print result

我用了段包含循环、列表、函数、模块的代码片段。看看效果如何:

左上是代码,箭头表示当前运行到的位置。

通过下面的按钮和进度条可以直接控制程序的进行。

左下是输出。

右边就是程序的可视化模拟。在这个例子里,可以清楚地看到过程中变量的变化,何时调用了函数等信息。

不过同很多在线运行环境一样,Python Tutor 不支持运行过程中的输入功能。所以没法把我们的猜数字或是罚点球的小游戏直接放上去运行。希望以后能够增加此功能。

(0)

相关推荐

  • 再谈Python的引用和变量

    来源:Python 技术「ID: pythonall」 再谈Python的引用和变量 上一次我们介绍了一个有用的代码可视化工具Python Tutor,说到我们还要通过这个工具再探讨一下Python引 ...

  • Python语言有什么特征?

    近年来,随着人工智能.大数据时代的到来,Python编程语言一跃而起,受到很多人的追捧与喜欢,它不仅前景好.岗位多.范围广,而且薪资待遇高.入门门槛低,是一门非常高级的编程语言.那么Python编程语 ...

  • 好用的Python开发工具

    好用的python开发工具?python开发成为当前比较热门的开发项目,python语言近年来已经成为最受欢迎的IT编程语言之一了,据权威的语言排名网站中显示,python语言已经3年多连续排前前三, ...

  • Python编程必备工具,推荐这五个!

    python是编程入门者非常不错的选择,现在不少程序员都开始转行到python行列中,因为简单易学.应用范围广,不过学习python还是需要一个好的工具,否则会吃不少苦头,那么Python编程必备5大 ...

  • Python和Java的六大差异!

    近年来,随着人工智能.5G时代的到来,编程语言变得更加火爆,其中Python和Java名列前茅,受到很多人的追捧.那么Python和Java有什么区别呢?我想很多人都比较好奇,接下来跟着小编来看看吧. ...

  • 【Python面试】 Python 的特点和优点是什么?

    最近公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开 ...

  • Python和Java有什么区别吗?哪个就业更好?

    Python是一个有着简单句法的多样性的语言.因为很多新手程序员会喜欢编写很少的代码,这使得Python被广泛应用于多个领域来写脚本,快速开发应用等等. Java是一个典型化的编程语言,这意味着变量名 ...

  • 你的代码长啥样?

    来源:Python 技术「ID: pythonall」 我们以前在文章<第17天:Python 之引用>中详细地讨论过 Python 中关于"引用"的话题,可能有的同学 ...

  • Python编译器哪些好用?学习工具推荐!

    学习Python的过程中肯定少不了IDE或者代码编译器,这些工具可以帮助我们更好地加快开发效率,那么学Python用什么编译器呢?我们来看看吧. Python语言常用的编译器有两种: 第一种是Pyth ...

  • 细说:程序运行的环境和运行过程,再看不懂请自行面壁

    编译器的任务,是要生成能够在计算机上运行的代码,但要生成代码,我们必须对程序的运行环境和运行机制有比较透彻的了解. 你要知道,大型的.复杂一点儿的系统,比如像淘宝一样的电商系统.搜索引擎系统等等,都存 ...

  • 细说程序运行的环境和运行过程再看不懂请自行面壁

    (掌握底层技术能力的重要性如果你想进阶成为这个层次的工程师不能只学上层的语法而是要把计算机语言从上层的语法到底层的运行机制都了解透彻) https://m.toutiao.com/is/eRynJwa ...

  • 电机运行过程中最容易出现的电气质量故障

    对于电机产品,一方面涉及到机械性能,另一方面涉及到电气性能,电气故障将会直接导致电机无法运行而停机,严重时烧毁电机. 电机运行过程中出现的电气类故障主要包括相间绝缘故障和对地绝缘故障,三相对机还会涉及 ...

  • MT4交易平台-箱体矩阵所谓箱体指股票在运行过程中形成价格区域

    MT4交易平台-箱体矩阵所谓箱体指股票在运行过程中形成价格区域

  • bat中启动一个exe程序时start和直接到该程序目录下用程序名字运行的区别

    Yanayang2018-05-08 22:56:00 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.c ...

  • 电气运行过程中发生反复切换/来回动作原来是它出了问题 看完秒懂!

    做为完成相应电器设备动作的电控系统,相信广大电工同行绝对不陌生.那么不知大家在工作中是否遇到过下面这种情况--原本该按照动作指令进行切换或转换的电器装置,却发生反复切换或来回动作后才能完成任务,甚至无 ...

  • 「理解实质」挥杆过程中头部必须保持不动吗?

    很多球友都听过,挥杆中头部应该保持不动.但其实这个说法并不准确,挥杆中身体围绕脊柱旋转,而头部在一定的范围内是可以有移动的. 那头部可移动的范围是多少呢?今天,高提士高尔夫技术导师于浩给大家分享三种情 ...

  • 世界上最重要的事:理解现实如何运行,并应对现实

    Ray Dalio 在<原则>的生活部分提到的第一条大的原则就是拥抱现实,然后应对现实. 世界上最重要的事情就是理解现实如何运行,以及如何应对现实.毛泽东在毛选中也提到过,当你的认识和客观 ...

  • Win10系统如何禁止某个程序的运行?

    Win10系统下可以利用组策略编辑器来禁止某个程序的运行,如果家里有小孩就可以禁止掉游戏和QQ的运行,这样才能让他们更好地利用电脑来进行学习.那么Win10系统如何禁止某个程序的运行? 方法如下: 1 ...