这既是语义错误又是逻辑错误吗?

问题描述 投票:0回答:1

我是一名 AP 计算机科学老师。

我给我的学生这个问题:

假设您正在构建一个程序来自动化购买音乐会门票的过程。 这是您的程序的伪代码:

  1. 接受用户输入(“你多大了?”)

  2. 如果用户年龄>=18,打印“你可以进入音乐会,但不能买酒。”

  3. 否则如果用户年龄 >= 21,则打印“您可以进入音乐会并购买酒精。”

  4. 否则,打印“你可能根本不去音乐会。”

我问他们这是语法错误、逻辑错误还是语义错误。

我的意图是他们选择逻辑错误,但学生们说如果他们选择语义错误,他们应该得到学分。

你有什么想法?

我真的很期待逻辑错误,因为他们所要做的就是反转第一个和第二个布尔条件的位置。

pseudocode logic-error
1个回答
0
投票

语义错误和逻辑错误的定义不明确。

  • 当程序由于程序逻辑或算法的缺陷而无法按预期执行时,就会发生逻辑错误。代码的语法是正确的,但结果不是你所期望的。

  • 语义错误是指程序员误解了编程语言的工作原理并编写了在语言规则的上下文中没有意义的代码。因此,他们可能会认为这是一个语义错误,因为他们误解了 Python 会首先考虑第一个 if。

但是,如果这是一道考试题,我们必须假设他们已经了解Python的基本概念,所以你不应该给选择语义错误的学生任何分数。

类似的情况是

ZeroDivisionError
,这是一个运行时错误,但如果代码是
a/b
并且
b
无意中恰好是
0
,或者
np.array([7]) / 0
给出了
,这也是一个逻辑错误array([inf])
没有错误,但不是代码应该做的事情。

© www.soinside.com 2019 - 2024. All rights reserved.