在早期的函数中,我们称之为a
,我必须确保a
函数不会产生太小的答案(比如说,答案必须大于10)。
但是稍后,在第二个函数b
(它使用函数a
作为它的输入之一)中,如果被修改的同一个答案比前面的assert
语句小,那就没问题了。你知道吗
有办法吗?你知道吗
当函数b
生成的答案太小时,我试图保存变量中的答案有多小,但在运行doctest时仍然会出现断言错误。你知道吗
def grade_on_project(student_project_score, max_score, overall_score):
project_grade = student_project_score / max_project_score
assert project_grade > 0.6 # (student fails the class if any of their scores on a project are too low)
overall_score +=student_project_score
return overall_score
def who_fails_first(operation, person1, person2)
if (operation(person1, max_score, person1) <= 150 and (operation(person2, max_score, overall_score) > 150:
print(student 1 failed)
if (operation(person2, max_score, overall_score) <= 150 and (operation(person1, max_score, overall_score) > 150:
print(student 2 failed)
who_fails_first(grade_on_project, 5, 9)
断言应该而不是用于实现某段代码的逻辑。为什么?因为你不能保证他们真的长大了!你知道吗
-O
选项用于“优化”。但它也会删除所有断言assert
应用于调试,检查编写良好的程序中不应发生的情况。你知道吗如果要以某种方式处理特殊输入,应使用异常:
或者您可以编写一个自定义异常,如:
并将
if
更改为:然后,当您捕获异常时,仍然可以通过异常的
grade
属性访问导致它失败的等级。你知道吗如果不想在特定情况下引发异常,可以添加一个参数,例如
low_grade_is_ok
,并将函数修改为:然后在不希望引发异常的函数中,可以使用
low_grade_is_ok=True
调用它,在这种情况下不会引发异常。你知道吗相关问题 更多 >
编程相关推荐