2.3.1-函数定义.md

问答库

2.3.1 函数定义(问答库)

  1. 【单选题·易】Python 中定义函数使用的关键字是( ) A. function B. def C. func D. define 答案:B 解析: 课程明确指出,函数定义的关键字是 def。function、func、define 都不是 Python 定义函数的关键字。
  2. 【单选题·易】函数定义的三个要素是( ) A. 模块名、包名、库名 B. 函数名、形式参数列表、函数体 C. 实参、文件名、异常类型 D. 类名、对象名、方法名 答案:B 解析: 课程将函数定义的要素概括为函数名、形式参数列表和函数体。模块与包属于后续小节,不是定义函数的三要素。
  3. 【判断题·易】定义无参函数时,函数名后面的圆括号可以省略。 答案:× 解析: 函数可以没有参数,称为无参函数;但定义无参函数时,函数名后面的圆括号也不能省略。正确写法如 def sayHello():。
  4. 【判断题·易】函数也可以没有返回值,这时可以不写 return 语句。 答案:√ 解析: 课程明确指出:函数也可以没有返回值,这时可以不写 return 语句。例如 sayHello() 只负责打印问候语。
  5. 【多选题·中】关于下列函数定义,说法正确的有( )
def add(a, b):
    s = a + b
    return s

A. 函数名为 add B. 形式参数是 a 和 b C. 调用 add(3, 4) 得到 7 D. 该函数没有函数体 答案:ABC 解析: 这是课程中的 add 示例:两个参数 a、b,函数体计算二者之和并 return。add(3, 4) 的结果为 7。D 错误,s = a + b 与 return s 就是函数体。

  1. 【单选题·中】下列哪一项是无参函数的正确定义? A. def sayHello: B. def sayHello(): C. function sayHello(): D. def sayHello[]: 答案:B 解析: 无参函数仍须保留圆括号。A 漏写括号,属于语法错误;C 误用其他语言的关键字;D 误用方括号。课程示例为 def sayHello():。
  2. 【多选题·中】下列关于 return 的说法正确的有( ) A. return 用于返回函数的结果 B. 当函数执行到 return 语句时,函数会立即终止 C. 一个函数可以包含多个 return 语句 D. 多个 return 会按书写顺序全部执行一遍 答案:ABC 解析: return 既返回结果也结束函数执行,因此多个 return 用于不同条件分支,不会相互干扰,更不会全部执行。D 与“立即终止”矛盾。
  3. 【判断题·中】Python 函数一次只能返回一个值,不能同时返回列表的最小值和最大值。 答案:× 解析: Python 函数可以返回多个值:将多个值依次放在 return 后面并以逗号分隔。课程中的 getMinMax(alist) 就同时返回最小值和最大值。
  4. 【简答题·中】写出 Python 函数定义的基本形式,并说明各部分含义。 答案: 基本形式(语法模板,示意用)为:
def 函数名([形式参数列表]):
    # 函数体
    [return 返回值]

关键字是 def;函数名用于调用;形式参数列表在定义时声明,用来接收传入数据,可以省略(无参函数),但圆括号不能省略;函数体是缩进后的执行语句;return 返回值 可选,用于把结果交还给调用者,执行到 return 时函数立即结束。 解析: 评分要点:①写出与课程一致的基本形式;②说明 def、函数名、形参、函数体、return 的含义;③点明无参时圆括号仍不可省、return 可省略。只写示例函数而未给一般形式,给部分分。

  1. 【单选题·难】运行下列程序,输出结果是什么?
def getMinMax(alist):
    minValue = min(alist)
    maxValue = max(alist)
    return minValue, maxValue

print(getMinMax([3, 1, 4, 1, 5, 9]))

A. 1 B. 9 C. (1, 9) D. [1, 9] 答案:C 解析: min 得到 1,max 得到 9,return minValue, maxValue 一次返回两个值,调用结果是元组 (1, 9)。print 打印元组时带圆括号,元素之间有逗号和空格。A、B 只取了其中一个值;D 误写成列表。

  1. 【简答题·难】为什么一个函数可以写多个 return 而它们不会相互干扰?请写出课程中按从大到小返回两个参数的 sort 函数,并给出调用 sort(3, 8) 与 sort(9, 2) 的完整可运行程序及输出。 答案: return 不仅返回结果,还会立即结束函数。执行到某一个 return 后,后续分支中的 return 不会再执行,因此多个 return 互不干扰。完整程序:
def sort(a, b):
    if a >= b:
        return a, b
    else:
        return b, a

print(sort(3, 8))
print(sort(9, 2))

输出为:

(8, 3)
(9, 2)

sort(3, 8) 走 else 分支,返回较大的 8 再返回 3;sort(9, 2) 满足 a >= b,返回 9, 2。 解析: 评分要点:①说明“执行到 return 立即终止”;②代码与课程 sort 逻辑一致且可运行;③两次调用结果分别为 (8, 3) 和 (9, 2),顺序为从大到小。写成从小到大或漏写 else 分支,不得满分。

  1. 【单选题·难】运行下列程序,输出结果是什么?
def add(a, b):
    s = a + b
    return s
    print('不会执行')

print(add(3, 4))

A. 7 和 不会执行 两行 B. 7 C. 不会执行 D. 因 return 后面还有语句而报错 答案:B 解析: add(3, 4) 中 s 为 7,执行 return s 后函数立即终止,其后的 print('不会执行') 不会运行,也不构成语法错误。外层 print 打印返回值 7。A 误以为 return 之后的语句仍会执行。

下载此文件