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

不用 Python 捷径描述输入验证

你知道范围检查是什么,但在考试答案里把它写成循环,是另一种技能。

本页内容
  1. 怎样把规则变成循环?
  2. 示例讲解
  3. 要留意的错误
  4. 自我检查
  5. 接下来学什么

输入验证(input validation)是一个不断询问、直到值符合规则的循环。规则可以是范围、长度或存在性检查,循环条件描述的是无效的情况。

本课属于适用大纲的伪代码,建立在赋值与比较的追踪之上,也与验证、校对与测试里的更大范围概念相连。

怎样把规则变成循环?

先用文字说出规则,再写出无效的条件,因为数据有误时循环才重复。

检查规则无效条件
范围年龄在 12 到 18 之间Age < 12 OR Age > 18
长度代码恰好 6 个字符LENGTH(Code) <> 6
存在性名字不为空Name = ""

模式是:先读一次,再在无效时重复,并在循环内再次询问。

INPUT Age
WHILE Age < 12 OR Age > 18 DO
   OUTPUT "Enter an age from 12 to 18"
   INPUT Age
ENDWHILE

示例讲解

用户依次输入 25、9、14,追踪上面的循环。

步骤Age条件 (Age < 12 OR Age > 18)动作
第一次 INPUT2525 > 18,所以 TRUE提示,再次 INPUT
第二次 INPUT99 < 12,所以 TRUE提示,再次 INPUT
第三次 INPUT14FALSE,FALSE,所以 FALSE循环结束

提示输出了两次,Age 最后是 14。检查:14 不小于 12,也不大于 18,所以允许。

有些题目也接受用文字描述检查:“当年龄小于 12 或大于 18 时,重复输入。”要精确地说出规则,避免指向某个内置方法。

要留意的错误

常见失误是该用 OR 的地方用了 AND。

错误的条件: WHILE Age < 12 AND Age > 18 DO

没有任何数同时小于 12 又大于 18,所以条件永远是 FALSE。循环从不运行,25 被接受。

纠正方法是对无效情况使用 OR。第二种失误是在 WHILE 里写了有效条件:WHILE Age >= 12 AND Age <= 18 会对好的值重复提示,对坏的值反而停止。如果你更想写有效的规则,就用 REPEAT ... UNTIL Age >= 12 AND Age <= 18。

自我检查

1. 写出分数必须在 0 到 100 之间时的无效条件。

显示答案

Mark < 0 OR Mark > 100

2. 代码必须恰好 5 个字符。用户输入 “AB12”,循环会重复吗?

显示答案

LENGTH(“AB12”) 是 4,4 <> 5 为 TRUE。会,循环重复并再次询问。

3. 用户实际 17 岁却输入 15,年龄的范围检查能拦住吗?

显示答案

不能。15 在范围内,所以通过。验证检查的是值是否合理,而不是它是否真实。

接下来学什么

验证循环是最容易出现终止错误的地方之一,所以接着学修复循环终止条件。可以在受限伪代码追踪训练器里逐步运行代码。

我们线上一对一计算机科学补习的老师可以给你新的验证情境,并检查你写的每一个条件。

常见问题

验证(validation)能证明数据是正确的吗?

不能。验证只检查数据是否合理、是否被允许,例如年龄在 12 到 18 之间。它无法知道年龄是否真实。校对(verification),例如把值输入两次,是另一个概念,用来发现输入错误。

答案里可以用 isdigit 这样的内置函数吗?

伪代码答案应使用标准结构来描述检查:比较、循环,以及伪代码指南列出的函数。特定语言的方法可能不被认可。可以改用步骤来描述检查,或者先确认 Cambridge 指南包含哪些函数。

提示语要在循环里重复吗?

要。如果第一次输入无效,循环必须再次询问,所以 INPUT 这一行既要出现在循环之前,也要出现在循环之内。否则同一个错误的值会被一直测试下去。

更新于:

下一步

如果你能说出每种验证检查的名字,却在要写循环时卡住,一对一老师可以陪你一条一条条件地把答案搭起来。

一小时付费试听课,按所安排老师确认的收费,RM80 起。

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

家长:在这里咨询

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