跳到正文
IGCSE·Tuition
计算机科学 · 课程

把算法对应成受限的 Python 函数

伪代码你读得很顺,一要改写成 Python 就卡住了。

本页内容
  1. 伪代码的每个部分怎样对应到 Python?
  2. 例题
  3. 要提防的错误
  4. 自我检测
  5. 接下来学什么

要把算法对应成 Python,一次翻译一种结构:赋值、选择、循环、输出。逻辑完全不变,只改写法。

这是 过渡到 Python 与代码运行 的第一课,建立在 适用大纲的伪代码 的写法之上。

伪代码的每个部分怎样对应到 Python?

概念Cambridge 风格伪代码Python
存入一个值Count ← 0count = 0
比较是否相等IF Mark = 50if mark == 50:
其他比较>=, <=, <>>=, <=, !=
计数循环FOR Index ← 1 TO 5for index in range(1, 6):
遍历列表FOR 加 Scores[Index]for score in scores:
代码块结尾ENDIF, NEXT缩进
显示结果OUTPUT Countprint(count) 或 return count

range 函数会在第二个数字之前停止。要数 1 到 5,要写 range(1, 6)。

例题

算法:数一数五个分数中有几个是 50 分或以上。

Count ← 0
FOR Index ← 1 TO 5
   IF Scores[Index] >= 50 THEN
      Count ← Count + 1
   ENDIF
NEXT Index
OUTPUT Count

第 1 步,包进函数。 数组变成参数,函数就可以用任何列表来测试。

第 2 步,逐个结构翻译。

def count_passes(scores):
    count = 0
    for score in scores:
        if score >= 50:
            count = count + 1
    return count

print(count_passes([72, 45, 50, 38, 91]))

第 3 步,用 72, 45, 50, 38, 91 追踪。

scorescore >= 50count 之后
(开始)0
72True1
45False1
50True2
38False2
91True3

输出是 3。注意 50 也算,因为判断用的是 >= 而不是 >。

要提防的错误

常见的失误是把伪代码的下标范围直接抄进 Python。

错误答案: for index in range(1, len(scores)): 然后用 scores[index]

这从位置 1 开始,但 Python 列表从位置 0 开始,所以第一个分数被跳过。用上面的列表,它只看到 45, 50, 38, 91,返回 2。

改正的做法是直接遍历数值,例如 for score in scores,这样不会漏掉也不会越界。如果需要下标,range(len(scores)) 从 0 跑到最后一个位置。一定要追踪第一项和最后一项来抓出这个错误。

自我检测

1. 写出 Total ← Total + Mark 的 Python 写法。

查看答案

total = total + mark。箭头变成 =,变量名习惯用小写。

2. 写出 IF Mark = 100 THEN 的 Python 条件。

查看答案

if mark == 100:。两个等号用来比较,这一行以冒号结尾。

3. count_passes([50, 50, 49]) 返回什么?

查看答案

2。两个 50 及格,因为 50 >= 50 是 True,而 49 不及格。

接下来学什么

下一课看缩进怎样改变程序行为:测试缩进与分支结构。你可以在 Python 推理沙盒 里试上面的函数,再和 受限伪代码追踪训练器 对照。

如果你翻译正确,却在追踪时失分,我们的 线上一对一计算机科学补习 可以针对这个习惯来练。

常见问题

考试一定要用 Python 作答吗?

要按每道题的指示和你所考年份的大纲来作答。如果题目要求写伪代码,就写伪代码。请到 Cambridge 官网查看 Computer Science 0478 大纲页面,大纲版本不确定时可以询问你的考试中心。

print 和 return 有什么不同?

print 把数值显示在屏幕上,函数继续执行。return 把数值交还给调用函数的地方,并结束函数。如果题目要求函数“给出结果”,就用 return,测试时再 print 返回的值。

为什么 Python 不需要 ENDIF 或 NEXT?

Python 用缩进标明代码块的结尾。缩进在 if 或 for 之下的行属于它,第一行缩进较少的行就结束了这个块。所以在 Python 代码中,一致的空格非常重要。

更新于:

下一步

如果逐行翻译仍像在猜,一对一的老师可以和你一起建立对照表,并用追踪表核对每一行。

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

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

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

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