跳到正文
IGCSE·Tuition
工具

安全 Python 推理沙盒

Python 代码可以顺利运行却输出错误的答案,大部分失分就出在这里。

本页内容
  1. 怎么使用?
  2. 怎么看结果?
  3. 例子演示
  4. 有哪些假设和限制?
  5. 哪些课程解释了这些结果?

你输入的所有内容只保存在此设备上,不会发送给我们。

本页包含一个小型类 Python 解释器和五个简短练习。你运行代码,工具把输出与预期输出对比,测试未通过时还会给出可以思考的问题。

它的目的是培养你分析代码的习惯,而不只是运行代码。

怎么使用?

  1. **选择练习。**读一行说明,例如“程序应该输出 15。”
  2. 点按钮之前先预测输出。写下你认为会出现的内容。
  3. 按运行并测试。重置会回到第一个练习。
  4. 阅读结果。通过了,就试着解释为什么;没通过,就看“想一想”的问题,在文本框里修改代码再运行。

请用空格缩进。支持的子集列在代码框下方:+ - * / // % **、比较、and/or/not、print()、int()、str()、abs()、len()、min()、max()、if/elif/else、while、for … in range(…)、break 和 continue。

怎么看结果?

左边是你的输出,右边是预期输出,并有信息说明是否一致。下面显示已执行的步数,以及结束时各变量的值。

如果被安全上限停止,比较结果上方会出现警告。被停止的程序仍会显示上限之前已输出的内容,通常足以看出规律。

例子演示

打开1 到 5 的总和(有错误)。代码把 range(1, 5) 中的 n 加到 total 并输出。预期输出是 15。

运行后,输出是 10,测试未通过。看第一个提示:range(1, 5) 会产生哪些数?它产生 1、2、3、4,因为停止值不包含在内。

所以 total 是 1 + 2 + 3 + 4 = 10,不是 15。

把停止值改为 6 再运行。数是 1 到 5,总和 15,测试通过。

再打开翻倍直到超过 50。从 x = 1 开始,当 x <= 50 时翻倍。值依次是 2、4、8、16、32、64。

到 64 时条件为假,循环结束并输出 64。条件是在翻倍前检查的,所以最终值会超过 50。

然后试有错误的循环:while True。它会一直输出 0,工具会在上限处停止。题目要求你让它输出 0、1、2。

请修改循环,使 n 每轮增加,并在 n 到 3 时停止,然后运行。

有哪些假设和限制?

  • 这是 Python 的子集。用 / 做除法时,整数结果不显示“.0”。
  • 没有自定义函数、列表、字符串方法或导入。
  • 程序上限 60 行,输出上限 200 行。
  • 失控的循环在 5000 步或 300 毫秒时停止。
  • 它不能查看或更改任何文件,也不发出网络请求。
  • 只用于原创练习。它不是考试环境,也不会批改需要评分的课业。

哪些课程解释了这些结果?

关于循环,请读修正差一错误(off-by-one),它正好解释了上面 range(1, 5) 的错误。先预测的习惯在运行代码之前先说明预期结果中讲解,找出未测试的分支则说明一次测试通过并不能证明什么。

想了解数值如何经过函数,请看追踪返回值。完整路线见Python 过渡与执行。

如果你想让老师陪你检查循环和测试,请看线上一对一 Computer Science 补习。伪代码追踪训练是很好的搭档,更多工具见学习工具目录。

常见问题

这是真正的 Python 吗?

它是在本页内运行的类 Python 子集小型解释器。支持变量、算术、比较、print、if/elif/else、while、带 range 的 for、break 和 continue,以及几个内置函数。没有自定义函数、列表、导入或文件访问。你所在考试年份要求的 Python,请以当前大纲为准。

如果我的循环不会结束会怎样?

解释器会计算每一步,也会看时间。达到 5000 步或 300 毫秒时,它会停止你的代码并告诉你,同时保持页面可用。然后问一个有用的问题:循环里有什么改变了条件所检查的东西?

沙盒能接触我的文件或网络吗?

它完全不提供文件、网络或导入功能,所以你输入的代码无从访问这些东西。我们不声称这是正式的安全边界,只是它没有任何危险功能,请只用于简短的练习。

为什么工具要显示预期输出?

让你检验自己的预测。好习惯是在运行前先写下你认为会输出什么。如果工具显示测试未通过,结果下方的提示会引导你回到需要重新追踪的那一行。

资料来源

  1. Cambridge IGCSE Computer Science 0478 大纲页面

更新于:

下一步

如果你写的代码能运行,却说不清为什么输出的值不对,一对一老师可以陪你逐步走一遍循环,培养先预测再运行的习惯。

一小时付费试听课,按所安排老师确认的收费,RM80 起。 其他费用、时间安排及后续课程,在试听课后由家长与老师直接确认。

补习由家长或监护人安排。用 WhatsApp 把这页发给他们,他们就可以替你咨询。

是家长或监护人?在这里咨询

已通过我们的服务帮助 9,000+ 名学生