debugging 前置条件、后置条件和返回值[已关闭]

pgky5nke  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(113)

已关闭。此问题需要更多focused。它目前不接受回答。
**希望改进此问题?**更新问题,使其仅针对editing this post的一个问题。

两年前关闭。
Improve this question
我在阅读“think python”这本书,我读了第6.9章,其中谈到了调试。
将一个大的程序分解成更小的函数会为调试创建自然的检查点。如果一个函数不起作用,有三种可能性需要考虑:
函数获取的参数有问题;前提条件被违反。功能有问题;违反了后置条件。返回值或其使用方式有问题。
我明白它的意思,但我试图举例说明,以便我能更好地理解,但我不能。谁能给我举个简单的例子,让我更好地理解它?

tpxzln5u

tpxzln5u1#

我不太熟悉这个术语,但我想我能理解他的意思。
让我们以一个小函数为例:

def mystery(num1, num2):
    new_num = num1 / num2
    is_square = True
    if new_num == num2:
        is_square = True
    return is_square

字符串
此函数首先将num1除以num2,然后检查结果是否为num2(即num2^2 = num1),并返回is_square。当然,检查它是否是正方形不是最有效的方法,但它适合我们的目的。
函数的参数有什么问题?我在代码中假设num2是一个数字(而不是字符串),并且它不为零。“参数有问题”意味着有人用字符串或零或任何其他无效的内容调用了函数。这是个错误。
其次,还有函数内的误差:请注意,我犯了一个错误(故意的),is_square应该初始化为False。这是一个函数错误的示例。
最后一种错误,也就是返回值的错误,是如果你返回了一个错误的值,比如返回num1而不是is_square,返回not is_square(相反)等等。

相关问题