python基础语法4,函数(简单易上手的python语法教学)课后习题
一、题目知识点
函数
二、选择题
题目
题目 1
以下说法错误的是 [1 分]
A 函数不可以用于多个程序中。
B 函数在调用之后才能开始执行。
C 函数在定义之后,在需要使用的时候直接使用函数名即可调用
D 函数是一段具有特定功能的、可复用的语句组,通过函数名来表示和调用
题目 2
关于函数的描述错误的是 [1 分]
A 函数名的命名规则需要与 Python 变量命名规则一致。
B 定义函数时,函数的参数列表可以有零个、一个或多个形参。
C 定义后的函数不能直接运行,需要经过 “调用” 才能运行。
D 定义函数时,需要有 return 来返回值。
题目 3
如下定义的函数功能是
def fun(n):s = 1for i in range(2, n+1):s *= ireturn s
A 求 1 与 n+1 的乘积
B 求 n 的阶乘
C 求 1 与 n 的乘积
D 求 s 与 n 的乘积
题目 4
如下定义的函数,当 n 的值为 3 时的值为
def fun(n):s = 1for i in range(2, n+1):s *= ireturn s
A 2
B 3
C 4
D 6
题目 5
以下代码中默认参数使用正确的是 [1
A def fun(a, b):
print(a, b)
B def fun(a, b=1):
print(a, b)
C def fun(a=1, b):
print(a, b)
D def fun(a, b):
print(a, b=1)
题目 6
执行以下代码的输出为
def fun(a, b, c, d):print(a, b, c, d)
fun(1, 2, 3, 4)
A 1 2 3 4
B 1, 2, 3, 4
C 4 3 2 1
D 空
题目 7
关于 return 语句错误的是 [1 分]
A return 语句可用来结束函数并将程序返回到函数被调用的位置继续执行。
B return 语句可以出现在函数中的任何部分。
C 一个 return 语句只能返回一个值。
D 函数可以没有 return 语句,此时函数并不返回值。
题目 8
Python 程序中,以下说法不正确的是 [1 分]
A 局部变量仅在函数内部,且作用域也在函数内部。
B 全局变量的作用域跨越多个函数。
C 局部变量指在函数内部定义的变量,在函数内部和外部有效。
D 全局变量指在函数之外定义的变量,在程序执行全过程有效。
题目 9
执行如下代码的输出为:
a = 123
b = 456
def fun():a = 456b = 123
fun()
print(a, b)
A 123 456
B 456 123
C 123
D 456
题目 10
Python 程序中,以下说法不正确的是 [1 分]
A 全局变量指在函数之外定义的变量,在程序执行全过程有效。
B 全局变量在函数内部使用时,需要提前对变量声明。
C 全局变量声明时使用保留字 global。
D 在函数内部引用外部的全局变量,函数内部的该变量名可以和外部全局名不同名。
题目 11
以下关于 Python 函数的描述中,错误的是 [1 分]
A 函数是一段可复用的语句组
B 每次使用函数需要提供相同的参数作为输入
C 函数通过函数名进行调用
D 函数是一段具有特定功能的语句组
题目 12
有定义了函数为def name(a= 3, b= 4)
,则调用函数时参数至少需要传递多少个?[1 分]
A 0
B 1
C 2
D 3
题目 13
执行如下代码输出的结果为:
def ff(x, y):return x//y, x+y
print(ff(4, 3))
A (1, 7)
B 1, 7
C (4, 3)
D 4, 3
题目 14
执行如下代码输出的结果为:
a = [9, 5, 7]
b = [2, 4, 2]
def ff():a = b + [5]print(a)
ff()
print(a)
A [9, 5, 7]
[2, 4, 2]
B [9, 5, 7]
[9, 5, 7]
C [2, 4, 2, 5]
[9, 5, 7]
D [2, 4, 2, 5]
[2, 4, 2, 5]
题目 15
以下说法错误的是 [1 分]
A 全局变量在程序执行全过程都是有效的
B 局部变量一般都有缩进
C 全局变量不能和局部变量重名
D 全局变量在函数内部使用时,需要提前使用global
声明
题目 16
以下函数的定义不合法的是 [1 分]
A def ttp(x, y=2):
B def ttp(x, y):
C def ttp(x, *y):
D def ttp(*x, y):
题目 17
键盘输入数字 2,以下代码的输出结果是
try:a = input("请输入一个数值:")def function(a):return a+a
except:print("代码异常")
A 程序没有任何输出
B 4
C 代码异常
D 2
题目 18
执行如下代码输出的结果为:
a = 'turn'
def on(a):print('exit')
def turn():on('open')
turn()
A turn
B open
C exit
D 无任何输出
题目 19
以下说法错误的是 [1 分]
A 函数中必须包含 return 语句
B return 语句用来结束函数并将程序返回到函数被调用的位置继续执行
C return 可以出现在函数中的任何部分
D 函数存在多种结束条件时,将使用多个 return 语句
题目 20
执行如下代码,输入 84 时输出的结果为:
score = eval(input())
if score < 60:print("考得非常不好")
elif score < 75:print("考得马马虎虎")
elif score < 85:print("考得还不错")
else:print("考得非常棒")
A 考得非常不好
B 考得马马虎虎
C 考得还不错
D 考得非常棒
题目 21
执行如下代码输出的结果为:
def ff(a, b):if a==b-2:print('ok')else :print('no')
ff(1, 2)
A ok
B no
C ok
D 无内容输出
题目 22
以下关于函数说法错误的是 [1 分]
A 函数的调用与函数组织,使用者不需要了解函数的内部实现原理,只要了解函数的输入输出方式即可
B 函数的定义也叫函数的声明,定义后的函数不能直接运行,需要调用才能执行
C 在函数使用 return 语句时,至少需要返回一个值
D 保留字pass
表示不进行任何操作,起到占位的作用
题目 23
以下描述错误的是:[1 分]
A 函数可以一次返回多个值
B 函数可以实现接收任意数量的参数
C 函数必须要有一个或多个 return 语句
D 函数参数可以为默认值,即无需传递数据给对应参数
题目 24
以下说法错误的是 [1 分]
A 函数内部定义的变量为局部变量
B 全局变量一般指定义在函数之外的变量
C 全局变量在函数内部使用,一般需要加global
进行声明
D 函数执行结束后,其他代码可以继续使用该函数的局部变量
题目 25
关于以下代码的描述中,错误的是
def pro_1(x):a = 1for i in range(1, x+1):a *= ireturn a
print(pro_1(2))
A 参数 x 是可选参数
B pro_1(x)
实现求取 x 的阶乘
C 变量 a 在执行pro_1
之后会自动被系统回收
D return 会将变量 a 的值返回给调用函数
题目 26
以下代码的输出结果是
def func(a, b):a *= breturn a
s = func(5, 2)
print(s)
A 25
B 10
C 20
D 5
题目 27
以下代码的输出结果是
ls = ["python", "java"]
def add_(a):ls.append(a)return
add_("c++")
print(ls)
A ["c++"]
B ["python", "java"]
C ["python", "java", "c++"]
D []
题目 28
以下关于 Python 缩进的描述中,错误的是 [1 分]
A Python 用严格的缩进表示程序的格式框架,所有代码都需要在行前至少加一个空格
B 缩进是可以嵌套的,从而形成多层缩进
C 缩进表达了所属关系和代码块的所属范围
D 判断、循环、函数都能够通过缩进包含一批代码
题目 29
以下关于函数说法错误的是 [1 分]
A 函数可提高代码的可读性
B 函数可以使代码的冗余降低
C 函数使用保留字def
定义
D 函数可以体现出代码的复杂度
题目 30
Python 中定义函数的保留字是 [1 分]
A def
B for
C while
D return
题目 31
以下说法错误的是 [1 分]
A 函数可以一次返回多个值
B 定义函数时,参数赋为默认值时,可不传递参数
C 函数至少有一个或多个返回值
D 定义函数时,可选参数在非可选参数之后
题目 32
关于形参和实参的描述,以下选项中正确的是 [1 分]
A 函数定义中参数列表里面的参数是实际参数,简称实参
B 函数定义中参数列表里面的参数是函数内部的参数,这些参数称为形式参数,简称形参
C 程序在调用时,将实参复制给函数的形参
D 程序在调用时,将形参复制给函数的实参
题目 33
下面代码的运行结果是
def fff(num):num += 1
a = 10
fff(a)
print(a)
A 10
B 11
C 出错
D int
题目 34
执行如下代码输出的结果为:
def ff(x, y):x = y*2y = x//2
x = 4
y = 7
ff(x, y)
print(x, y)
A 14 7
B 4 7
C 7 7
D 7 14
题目 35
执行以下代码的输出结果为:
def fun_1():print("Python ", end = "")
def fun_2(n):for i in range(n):fun_1()
fun_2(3)
A PythonPythonPython
B Python
C 空
D 3
题目 36
执行如下代码输出的结果为
a=3
b=4
def eh(x, y):x, y = y, xreturn (x, y)
a, b=eh(a, b)
print(a, b)
A 3 4
B 4 3
C 3 3
D 4 4
题目 37
关于函数,以下选项中描述错误的是 [1 分]
A 函数使用时需要了解函数内部实现细节
B 函数:具有特定功能的可重用代码片段,实现解决某个特定问题的算法
C 函数在需要时被调用,其代码被执行
D 函数主要通过接口(interface)与外界通信,传递信息
题目 38
关于函数的参数传递(parameter passing),以下选项中描述错误的是 [2 分]
A 形式参数是函数定义时提供的参数
B 实际参数是函数调用时提供的参数
C Python 参数传递时不构造新数据对象,而是让形式参数和实际参数共享同一对象
D 函数调用时,需要将形式参数传递给实际参数
题目 39
下列代码运行结果是:
def ff(ls = []):ls.append(2)return ls
x = ff()
y = ff()
print(x, y)
A [2][2]
B [2][2, 2]
C [2, 2][2]
D [2, 2][2, 2]
解析
题目 1
答案:A
解析:函数的重要特性之一是可复用性,能够在多个程序场景中调用,提升代码效率。B 选项,函数遵循 “定义 - 调用” 流程,调用后才执行;C 选项,函数定义完成,后续用函数名即可触发调用;D 选项,准确描述函数本质,是带特定功能、可复用的语句集合,通过函数名标识和调用 。所以 A 说法错误,函数可用于多个程序。
题目 2
答案:D
解析:Python 函数定义灵活,有无return
语句均可。无return
时,函数默认返回None
。A 选项,函数名命名规则与变量一致,需符合标识符规范(字母、数字、下划线,且数字不能开头 );B 选项,参数列表支持 0 个(无参函数 )、1 个(单参函数 )或多个(多参函数 )形参;C 选项,函数定义后是 “代码块”,需调用(如函数名()
)才会执行逻辑。所以 D 说法错误,定义函数无需强制写return
。
题目 3
答案:B
解析:函数内for i in range(2, n + 1)
让i
遍历 2 到n
的整数,s
初始为 1,循环中s *= i
实现累乘,即s = 1×2×3×…×n
,这与 “n
的阶乘(n!
)” 数学逻辑完全匹配 。所以函数功能是求n
的阶乘,选 B。
题目 4
答案:D
解析:当n = 3
时,range(2, 3 + 1)
生成序列[2, 3]
。循环中:
- 第一次
i = 2
,s = 1×2 = 2
; - 第二次
i = 3
,s = 2×3 = 6
。
最终return s
输出 6,选 D。
题目 5
答案:B
解析:默认参数需定义在参数列表末尾,为参数提供 “兜底” 值,调用时可不传该参数。
- A 选项,无默认参数,调用需传齐
a
和b
; - B 选项,
b = 1
是默认参数,定义合法,调用时可传fun(5)
(b
用默认值 1 )或fun(5, 3)
(b
为 3 ); - C 选项,默认参数
a = 1
在非默认参数b
前,语法错误,Python 要求默认参数靠后; - D 选项,不是定义时设默认,是调用时尝试传参,语法逻辑错误 。
所以选 B。
题目 6
答案:A
解析:函数fun(a, b, c, d)
定义了 4 个形参,调用fun(1, 2, 3, 4)
时,实参按顺序传递给形参,print(a, b, c, d)
会按空格分隔打印实参值,输出1 2 3 4
,选 A。
题目 7
答案:C
解析:Python 中return
可返回多个值(本质是返回元组,如return 1, 2
等价return (1, 2)
)。
- A 选项,
return
是函数 “出口”,执行后结束函数,程序回到调用位置继续; - B 选项,
return
可在函数任意位置(如条件判断分支里 ),满足逻辑就触发返回; - D 选项,函数无
return
时,隐式返回None
。
所以 C 说法错误,return
可返回多值,选 C。
题目 8
答案:C
解析:局部变量作用域严格限制在函数内部,函数外无法访问。
- A 选项,局部变量 “生存在” 函数执行期间,作用域仅限函数内;
- B 选项,全局变量定义在函数外,作用域覆盖多个函数,函数内可访问(若不重定义同名局部变量 );
- D 选项,全局变量在程序运行全程有效,从定义到程序结束都可访问 。
所以 C 说法错误,局部变量不在外部生效,选 C。
题目 9
答案:A
解析:函数fun
内的a
、b
是局部变量,修改它们不会影响函数外的全局变量a
、b
。执行fun()
后,全局变量a = 123
、b = 456
未改变,print(a, b)
输出123 456
,选 A。
题目 10
答案:D
解析:函数内若定义与全局变量同名的变量,会形成 “局部变量遮蔽全局变量” 问题。若想在函数内使用同名全局变量,需用global
声明(如global a
),否则函数内同名变量视为局部变量。
- A 选项,全局变量定义在函数外,程序运行全程有效;
- B 选项,函数内使用全局变量(未被局部变量遮蔽时 ),需提前用
global
声明或通过globals()
访问; - C 选项,
global
是 Python 保留字,用于声明使用全局变量 。
所以 D 说法错误,函数内同名变量易引发作用域问题,并非 “可以不同名就随意”,选 D。
题目 11
答案:B
解析:函数调用灵活,参数只要符合定义规则(如类型、数量适配 )即可,无需每次参数完全相同。
- A 选项,函数核心价值是复用,把常用逻辑封装成可重复调用的语句组;
- C 选项,函数通过
函数名()
的方式调用,触发逻辑执行; - D 选项,函数是为实现特定功能(如计算、数据处理等 )编写的语句集合 。
所以 B 说法错误,函数调用参数可灵活变化,选 B。
题目 12
答案:A
解析:函数def name(a = 3, b = 4)
为a
、b
都设置了默认值,调用时若不传参数,会自动使用默认值(a = 3
、b = 4
)。所以调用该函数,参数传递数量最少为 0,选 A。
题目 13
答案:A
解析:ff(4, 3)
中,x // y
是整数除法(4 // 3 = 1
),x + y = 7
。Python 函数return
多个值时,返回的是元组,print(ff(4, 3))
会输出元组(1, 7)
,选 A。
题目 14
答案:C
解析:函数ff
内的a
是局部变量,执行a = b + [5]
后,局部变量a
变为[2, 4, 2, 5]
,print(a)
输出此局部值;函数外的全局变量a
未被修改,仍为[9, 5, 7]
,后续print(a)
输出全局值。所以最终输出:
[2, 4, 2, 5]
[9, 5, 7]
选 C。
题目 15
答案:C
解析:全局变量和局部变量允许同名,此时函数内同名变量默认是局部变量,会遮蔽全局变量。若想在函数内操作同名全局变量,需用global
声明(如global a
)。
- A 选项,全局变量从定义到程序结束都有效;
- B 选项,局部变量一般随函数执行 “诞生”,函数结束 “销毁”,作用域缩进在函数内;
- D 选项,函数内使用全局变量(未被遮蔽时 ),需用
global
声明 。
所以 C 说法错误,全局和局部变量可同名,选 C。
题目 16
答案:D
解析:def ttp(*x, y)
中,*x
是可变位置参数(可接收任意数量位置参数 ),y
是普通位置参数。调用时,y
需明确传参(除非给y
设默认值 ),否则易因参数传递歧义报错,语法定义不合法。
- A 选项,
y = 2
是默认参数,定义合法,调用可传ttp(1)
(y
用默认值 2 ); - B 选项,普通多参数定义,调用需传对应数量参数;
- C 选项,
*y
是可变位置参数,定义合法,可接收任意数量参数 。
所以选 D,该函数定义不合法。
题目 17
答案:A
解析:try
块中,input
获取的a
是字符串类型,function(a)
定义了但未执行调用(缺少function(a)
语句 ),且代码无语法 / 运行错误,不会触发except
。所以程序无输出,选 A。
题目 18
答案:C
解析:调用turn()
,函数内执行on('open')
,on
函数逻辑是print('exit')
。所以程序执行后输出exit
,选 C。
题目 19
答案:A
解析:Python 函数可无return
语句,此时默认返回None
。
- B 选项,
return
是函数 “终止符”,执行后函数结束,程序回到调用位置; - C 选项,
return
可在函数任意位置(如if
判断里 ),满足条件就返回; - D 选项,多分支逻辑中,可在不同条件用
return
返回对应结果(如根据输入返回不同值 ) 。
所以 A 说法错误,函数无需强制包含return
,选 A。
题目 20
答案:C
解析:输入84
,判断逻辑:
84 >= 60
,不触发print("考得非常不好")
;84 >= 75
,不触发print("考得马马虎虎")
;84 < 85
,触发print("考得还不错")
。
所以输出 “考得还不错”,选 C。
题目 21
答案:B
解析:ff(1, 2)
中,条件a == b - 2
等价1 == 2 - 2
(即1 == 0
),条件不成立,执行else
分支print('no')
,选 B。
题目 22
答案:C
解析:函数return
语句灵活,可返回具体值(如return 5
),也可无返回内容(return
单独使用,返回None
)。
- A 选项,函数封装细节,调用者只需关注输入输出,无需了解内部逻辑;
- B 选项,函数定义是 “声明”,需调用(
函数名()
)才执行; - D 选项,
pass
是占位符,用于语法需要但逻辑为空的场景(如空函数、空分支 ) 。
所以 C 说法错误,return
可返回None
,选 C。
题目 23
答案:C
解析:Python 函数可无return
语句(默认返回None
),并非必须有return
。
- A 选项,函数
return
多值时,本质返回元组(如return 1, 2
); - B 选项,通过可变参数(如
*args
),函数可接收任意数量参数; - D 选项,参数默认值让调用更灵活,不传参时用默认值(如
def fun(a = 5)
) 。
所以 C 说法错误,函数无需强制有return
,选 C。
题目 24
答案:D
解析:函数执行结束后,局部变量随函数 “生命周期” 结束而销毁,其他代码无法访问。
- A 选项,局部变量定义在函数内,作用域仅限函数;
- B 选项,全局变量定义在函数外,作用域覆盖程序;
- C 选项,函数内操作全局变量(同名时 ),需用
global
声明,否则视为局部变量 。
所以 D 说法错误,局部变量函数结束后不可用,选 D。
题目 25
答案:A
解析:pro_1(x)
中x
是 “必传参数”,调用时必须传值(无默认值 ),不是可选参数。
- B 选项,函数内
for
循环实现1×2×…×x
,即x
的阶乘; - C 选项,局部变量
a
随函数执行创建,函数结束后被 Python 垃圾回收机制回收; - D 选项,
return a
将计算结果返回给调用者 。
所以 A 说法错误,x
是必传参数,选 A。
题目 26
答案:C
解析:func(5, 2)
中,a *= b
即a = 5×2 = 10
,return a
返回 10,s = 10
,print(s)
输出 10 ,选 C。(注:若题目选项或代码有特殊逻辑,以实际验证为准,此解析基于常规代码执行 )
题目 27
答案:C
解析:初始ls = ["python", "java"]
,调用add_("c++")
执行ls.append(a)
,列表变为["python", "java", "c++"]
,print(ls)
输出此结果,选 C。
题目 28
答案:A
解析:Python 缩进用于标识代码块,但顶级代码(如脚本最外层逻辑 )无需额外缩进。
- B 选项,缩进支持嵌套(如
if
内套for
,缩进层次不同 ),形成多层逻辑; - C 选项,缩进清晰表达代码所属关系(如
for
循环内的语句靠缩进关联 ); - D 选项,
if
、for
、def
等语法结构,通过缩进包含一批代码,构成逻辑块 。
所以 A 说法错误,不是所有代码都要在行前加空格,选 A。
题目29
答案:D
解析:函数的作用是 “化繁为简”,通过封装逻辑降低代码复杂度,提升可读性、复用性。
- A 选项,函数把逻辑封装成 “黑盒”,调用者看函数名和说明即可使用,提高可读性;
- B 选项,重复逻辑用函数封装,避免代码冗余;
- C 选项,Python 用
def
关键字定义函数(如def fun():
) 。
所以 D 说法错误,函数降低代码复杂度,选 D。
题目 30
答案:A
解析:Python 中,def
是专门用于定义函数的保留字;for
用于循环,while
用于条件循环,return
用于函数返回值 。所以定义函数的保留字是def
,选 A。
题目 31
答案:C
解析:Python 函数可无return
语句(默认返回None
),并非至少有一个返回值。
- A 选项,函数
return
多值时,实际返回元组(如return 1, 2
); - B 选项,参数设默认值后,调用可不传该参数(如
def fun(a = 5)
,调用fun()
时a
用 5 ); - D 选项,参数定义需遵循 “可选参数(带默认值 )在后,必选参数在前” 规则(如
def fun(a, b = 5)
) 。
所以 C 说法错误,函数可无返回值,选 C。
题目 32
答案:C
解析:函数定义时,参数列表里的是 “形式参数(形参 )”,仅为占位;调用函数时传入的是 “实际参数(实参 )”,是具体值。程序执行时,实参的值会传递给形参,供函数内部使用 。
- A 选项,定义时是形参,调用时传实参;
- B 选项,形参是定义时的占位符,实参是调用时的具体值;
- D 选项,调用时是实参传给形参,非形参传实参 。
所以选 C,程序调用时将实参复制给形参。
题目 33
答案:A
解析:fff(a)
中,num
是局部变量,函数内num += 1
仅修改局部变量,不影响函数外的全局变量a
。print(a)
输出初始值 10 ,选 A。
题目 34
答案:B
解析:函数ff
内的x
、y
是局部变量,修改它们不会影响函数外的全局变量x
、y
。print(x, y)
输出初始值4 7
,选 B。
题目 35
答案:A
解析:fun_2(3)
会循环 3 次调用fun_1
,每次fun_1
执行print("Python ", end = "")
,连续输出三次 “Python”,最终结果为PythonPythonPython
,选 A。
题目 36
答案:B
解析:eh
函数实现了参数x
和y
的值交换,调用eh(a, b)
(初始a = 3
,b = 4
)后,a
和b
的值交换为4
和3
,print(a, b)
输出4 3
,选 B。
题目 37
答案:A
解析:函数的一大优势是 “封装性”,使用者只需关注函数的输入、输出和功能描述(接口 ),无需了解内部实现细节。B 选项,函数本质就是具备特定功能、可复用的代码片段,用于实现特定算法逻辑;C 选项,函数遵循 “定义 - 调用” 机制,被调用时才会执行内部代码;D 选项,函数常通过参数接收外部输入、通过return
或其他方式输出结果,实现与外界的数据交互 。所以 A 说法错误,函数使用时无需了解内部实现细节,选 A。
题目 38
答案:D
解析:函数调用时,是将 “实际参数(实参 )” 传递给 “形式参数(形参 )”,让形参接收实参的值参与函数内部运算。A 选项,形式参数是函数定义时声明的参数,用于占位;B 选项,实际参数是函数调用时传入的具体数据;C 选项,Python 中参数传递是 “引用传递”(对于可变对象 )或 “值传递”(对于不可变对象 ),本质是让形参和实参关联同一对象或值 。所以 D 说法错误,是实参传递给形参,选 D。
题目 39
答案:D
解析:ff
函数中ls = []
是可变默认参数,Python 中可变默认参数在函数定义时创建,后续调用会复用同一列表对象。
- 第一次调用
x = ff()
:列表ls
添加2
,变为[2]
,x
指向该列表; - 第二次调用
y = ff()
:列表ls
再添加2
,变为[2, 2]
,y
也指向该列表 。
所以print(x, y)
输出[2, 2] [2, 2]
,选 D。
三、代码题
1、如下请实现函数返回两个数的平方和以及两个数的和,请补充横线处代码
def fff(__a,__b__):return a**2+b**2, a+b
# 例如:调用函数输入参数 3,4 则返回(25, 7)
# 在 IDLE 中验证答案的正确性后,请将完整代码写入下面的答题区 # 参考答案:
# def fff(a,b):
# return (a**2 + b**2), (a+b)
解析
- 函数定义与返回值:Python 中函数
fff
需接收两个参数a
和b
,要返回两个数的平方和(a**2 + b**2
)以及两数之和(a + b
)。返回多个值时,用逗号隔开,Python 会将其封装成元组返回 。考生答案和参考答案逻辑一致,都能正确实现功能,写法上参考答案用括号更清晰体现元组返回形式,但两种写法在 Python 中都可运行。
2、用函数实现获取任意斐波那契数列项,斐波那契数列由 0 和 1 开始,之后的斐波那契数列系数由之前的两数相加。例如:0、1、1、2、3、5、8、13、21、34、……
输入:7
输出:8
def fibng(n):a=0b=1for i in range(__):_________return _________
while(1):n = eval(input("请输入需要获取的第_个斐波那契数列项")) print(fibng(n))
# 在 IDLE 中验证答案的正确性后,请将完整代码写入下面的答题区
解析
- 函数逻辑分析:
- 斐波那契数列从
0
和1
开始,要获取第n
项(n
从 1 开始计数 ),初始a = 0
,b = 1
。当n = 1
时返回0
,n = 2
时返回1
,从n >= 3
开始进入循环计算。循环次数应为n - 2
次,因为前两项已确定。 - 循环内更新逻辑:每次将
a
和b
往后推移一位,正确的更新应该是temp = b
,b = a + b
,a = temp
,考生答案里b=a+b
、a=b - a
也能实现同样效果(等价于交换更新 ),最终返回b
作为第n
项结果 。 while(1)
是构建一个循环,持续让用户输入n
来获取对应斐波那契数列项,不过实际使用中建议增加退出条件,避免无限循环,比如输入特定值(如-1
)时退出。- 补充完整可运行代码(优化退出逻辑):
- 斐波那契数列从
def fibng(n):a = 0b = 1if n == 1:return aelif n == 2:return bfor i in range(n - 2):b = a + ba = b - areturn bwhile True:try:n = eval(input("请输入需要获取的第几个斐波那契数列项(输入-1退出)"))if n == -1:breakprint(fibng(n))except:print("请输入正确的整数")