"Helper functions" 的作用是什么?

10
我不需要在这个任务上寻求帮助。 我已经完成了前三部分; 我只是在这里发布整个问题以帮助澄清。 我只是对第四部分感到困惑(如下所述); 我不确定它要求什么,想知道有人能否解释一下“辅助函数”的含义,以及我应该创作什么。
入学标准基于SAT的三个部分的分数和高中毕业班级的排名; 具体标准如下。 这些规则按照此处显示的优先顺序(1、2、3等)应用。
  • 如果输入数据无效(SAT小于200或大于800,或班级排名不是正整数),则被拒绝。

  • 如果任何一项测试分数为800,则被接受。

  • 如果任何一项测试分数低于300,则被拒绝。

  • 如果平均测试分数大于650且班级排名小于或等于25,则被接受。

  • 如果两个或更多的测试分数低于400或班级排名大于或等于75,则被拒绝。

  • 在其他情况下,申请人将被放入等待名单中。

第一部分:

一个名为admissionStatus(sat_math,sat_reading,sat_writing,class_rank)的函数,接受四个参数(如图所示),并返回字符串"Accept"、"Reject"或"Waitlist"。

第二部分:

一个名为isvalid(sat_math,sat_reading,sat_writing,class_rank)的函数,根据输入数据是否有效返回True或False。如果所有数据都有效,则返回True,否则返回False。
第三部分:
一个主函数,提示用户输入相关数据(申请人姓名,数学SAT成绩,阅读SAT成绩,写作SAT成绩和班级排名)。它还调用admissionStatus()并传递适当的参数。
第四部分:
任何其他您认为合适的辅助函数(将一些计算实现为单独的函数,可以从入学状态中调用。例如,您可能希望为上述规则编写一个函数)。
再次强调 - 我只问第四部分。我应该为每个条件编写一个函数吗?我真的不确定。
3个回答

26

帮助函数是执行另一个函数的部分计算的函数。

--来自Google

def add(a, b): # <-- This is a helper function
    return a + b

def main():
    subtract = 10 - 9
    multiply = 2 * 2
    add(5, 4) # <-- Helper function is called here

add(5, 4) 是一个辅助函数。你已经定义了 add(a, b) 函数并添加了所需的功能。现在你可以在任何时间、任何地点使用该函数,它将为你相加两个整数。

因此,这个 add 函数会“帮助”你随时随地地相加两个整数。


对不起,我还是不太明白 - 是这样的吗?def helper(): if admissionstatus(sat_math) = 800: print "accepted"(我不是想让任何人替我做作业,我真的不明白。如果有人能给我一个例子或什么的,那就太好了)。 - Mark Mason
@MarkMason,我已经更新了答案。如果有帮助,请告诉我。 - Maddy
这引出了一个问题,即辅助函数和非辅助函数之间的区别。维基百科的引用似乎暗示几乎所有函数都是辅助函数(因为它们被其他函数称为辅助函数),只有Main()(或等效函数)和回调函数(或等效函数)不是辅助函数(这似乎没有什么用)。或者说,辅助函数是仅由一个函数在一个地方调用的函数,因此它们是由调用函数私有/“拥有”的(不会被任何其他函数调用)?还是其他什么? - Peter Mortensen

19
一个“辅助函数”是你编写的函数,因为你需要在多个地方使用特定功能,并且它使代码更易读。
一个很好的例子是平均函数。您可以编写一个名为avg或类似的函数,它接收数字列表并返回该列表中的平均值。
然后,您可以在主函数中或其他更复杂的辅助函数中使用该函数,无论何时需要。基本上,您多次使用的任何代码块都是成为辅助函数的好选择。
另一个使用辅助函数的原因是使代码更易于阅读。例如,我可能能够编写一条非常聪明的代码行来计算数字列表的平均值,并且只需要一行代码,但它很复杂难以阅读。我可以创建一个辅助函数,并用一个更容易阅读的简单代码行替换我的复杂代码行。

对不起,我还是不太明白 - 是这样的吗?def helper(): if admissionstatus(sat_math) = 800: print "accepted"(我不是想让任何人替我做作业,我真的不明白。如果有人能给我一个例子或什么的,那就太好了)。 - Mark Mason
3
没有一个固定的定义来描述什么是帮助函数。只要一个函数能够让你用单个函数调用替换掉复杂的代码块,从而使得代码更加清晰易懂,那么它就可以被称为帮助函数。任何函数都有可能成为帮助函数。 - E.D.

0

这意味着您可以创建其他函数来帮助您完成项目。

通常,作业或测试会提供特定的函数签名。这可能意味着您只能在该函数内编写代码以解决问题。

通过指定您可以使用辅助函数,它表示您不仅限于一个函数。您可以创建其他函数,以便从指定的函数中调用。

针对您的情况更具体地说:您的任务要求您完成以下函数:

  • admissionStatus(sat_math,sat_reading,sat_writing,class_rank)
  • isValid(sat_math,sat_reading,sat_writing,class_rank)
  • 一个主函数

然后,任务说:

将 admission status 中的某些计算实现为可从 admission status 调用的单独函数。

那里有哪些计算可用?例如计算平均考试成绩。Python 的标准库中没有预先编写计算平均值的函数。因此,您需要编写自己的函数来执行该操作。

来自Python中计算算术平均数(平均值)

def mean(numbers):
    return float(sum(numbers)) / max(len(numbers), 1)

那就是一个“辅助函数”的例子。

对不起,我还是不太明白 - 是这样的吗? def helper():
if admissionstatus(sat_math)= 800:
print“accepted”(我不是想让任何人替我完成作业,我真的不明白。如果有人能给我一个例子或什么的,那就太好了)。
- Mark Mason
@MarkMason,我已经更新了我的答案,为您提供了一个更具体的示例。 - leanne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接