安全运行环境在你的浏览器里运行简短的 Python 代码,没有网络访问,也没有文件访问,并会停止运行时间过长的程序。它是测试思路的地方,而不是一台完整的电脑。
这一课属于 过渡到 Python 与代码运行,建立在 区分语法错误与错误结果 之上。
受限的运行环境允许什么、拒绝什么?
| 允许 | 拒绝或超出用途 |
|---|---|
| 变量、算术、比较 | 打开或保存文件 |
if、elif、else | 使用互联网 |
for 和 while 循环 | 永不结束的循环(会被限制停止) |
列表、函数、print | 大型函数库和大量数据 |
我们的 Python 推理沙盒 设有时间限制和内存限制,所以永远不结束的程序会被停止,而不会让页面卡死。我们不认为任何浏览器运行环境是绝对安全的,所以不要把真实的个人资料放进去。
例题
任务:从 10 开始,每次减 3,打印倒数。这是第一次尝试。
n = 10
while n > 0:
print(n)
第 1 步,追踪。 n 从 10 开始。判断 10 > 0 是 True,所以打印 10。没有任何东西改变 n,所以判断又是 True,再打印 10,永远如此。
第 2 步,预料会被限制停止。 运行环境在达到时间限制时停止程序。输出会是一长串 10,接着是停止信息。运行环境把它停止是正确的行为,错在你的代码。
第 3 步,修正。 循环必须让 n 朝出口移动。
n = 10
while n > 0:
print(n)
n = n - 3
第 4 步,重新追踪。
| 判断时的 n | n > 0 | 打印 | n 之后 |
|---|---|---|---|
| 10 | True | 10 | 7 |
| 7 | True | 7 | 4 |
| 4 | True | 4 | 1 |
| 1 | True | 1 | -2 |
| -2 | False |
输出是 10, 7, 4, 1。
要提防的错误
常见的失误是设计出依赖文件的练习。
错误答案:
lines = open("scores.txt").read()运行环境没有文件访问,所以这会失败。错在练习的设计,而不是你的逻辑。
改正的做法是把数据放进程序里:scores = [72, 45, 50, 38, 91]。无论数字来自文件还是列表,算法都是一样的,而考试中你要推理的是算法。只使用虚构的数值。
自我检测
1. 为什么没有出口的 while True: 不会让沙盒页面卡死?
查看答案
运行环境有时间限制,达到限制就停止程序,并显示一条信息。
2. 把这一行改成不需要文件也能运行:names = open("class.txt").read()。
查看答案
names = ["Ali", "Mei", "Ravi"]。使用虚构的名字,算法的其余部分不变。
3. 这个程序输出什么?
n = 2
while n < 30:
n = n * 3
print(n)
查看答案
n 依次是 2、6、18、54。到 54 时,判断 54 < 30 是 False,循环停止。输出:54。
接下来学什么
下一课看为什么必须标明建议所属的考试年份:把 2029 年仅限 Python 的指引分开。你可以在 受限伪代码追踪训练器 里练习追踪循环,再到 Python 推理沙盒 运行同样的逻辑。
如果你想要有人带着练循环和测试,可以看看我们的 线上一对一计算机科学补习。