目录
实验目的:
- 掌握函数的定义和调用方法;
- 熟悉函数参数的传递;
- 理解变量作用域,掌握局部变量和全局变量的用法;
- 掌握递归函数和匿名函数的用法
实验任务:
- 编写一个名为 is_prime()的函数,它有一个名为 number 的参数,如果参数是素数,那么 is_prime()就打印出 True;否则,is_prime()就打印 False。使用不同的参数调用该函数并查看结果。
- 编写一个函数 calculate,该函数接收任意多个数,并返回一个元组。元组的第一个值为所有参数的平均值,第二个值是大于平均值的所有数。
- 为用户创建个人简介。使用全局变量定义职业为学生;编写一个函数build_profile,该函数包含用户的姓、名、年龄(默认 21 岁)和其他个人信息。调用该函数,请根据自身情况填写实参姓名、年龄和其他感兴趣的个人信息,并打印输出。
- 递归函数。F1=F2=1,Fn=Fn-1+Fn-2,求第 n 项斐波那契值?
- 匿名函数。使用匿名函数计算立方。
实验步骤:
- 创建一个项目 python3,向其中添加一个 python 文件 python3_1.py。首先, 定义一个函数 is_prime,该函数包含一个参数 number,该函数的功能是,如果number 是素数,则打印 True,否则,打印 False;然后,多次调用该函数,查看使用不同参数调用该函数得到的结果。
- 在项目 python3 中新建文件 python3_2.py。首先,定义一个函数 calculate, 该函数包含一个形参*args,可接受任意数量的位置实参;然后,在该函数中计算所有形参的平均值,并定义一个列表 li,使用 for 循环判断每个形参是否大于平均值,如果大于平均值,则使用 append()加入到列表 li 中,返回平均值和列表 li;最后,调用 calculate 函数,给定任意个数字作为实参,运行并查看结果。
- 在项目 python3 中新建文件 python3_3.py。首先,定义一个全局变量occupation 表示职业,并赋值 student;然后,定义函数 build_profile,该函数包含参数姓、名、年龄(默认 21 岁),其他个人信息**user_info(如位置、专业等);在函数中,将姓、名、职业、年龄加入字典 user_info 中,并返回该字典;调用函数,自定义赋值,并打印输出结果。
- 在项目 python3 中新建文件 python3_4.py。首先,定义一个函数 fib,包含一个参数 n,如果 n=1 或 2,返回 1,否则,返回 fib(n-1)+fib(n-2);最后,调用fib,参数设置为 n,查看返回结果。
- 在项目 python3 中新建文件 python3_5.py。首先,使用 lambda 定义一个匿名函数 cubic,作用是求 x 的立方;然后调用 cubic,打印结果。
参考代码:
#python3_1
def is_prime(number):
if number<2:
print("Flase")
elif number==2:
print("True")
else:
for i in range(2,number):
if number%i==0:
print("Flase")
break
else:
print("True")
break
for i in range(3):
n=int(input("n="))
is_prime(n)
#python3_2
def calculate(*args):
s=0
for i in args:
s=s+i
e= s / len(args)
li=[]
for i in args:
if i>e:
li.append(i)
return e,li
print(calculate(1,2,3,4,5))
#python3_3
occupation='student'
def build_profile(xing,ming,age=21,**user_info):
user_info["姓"]=xing
user_info["名"] = ming
user_info["年龄"] = age
user_info["职业"] = occupation
return user_info
print(build_profile("张","三",19,位置="山西大学",专业="大数据"))
#python3_4
def fib(n):
if n==1 or n==2:
return 1
else:
return fib(n - 1) + fib(n - 2)
print(fib(6))
#python3_5
cubic=lambda x:x**3
print( cubic(x=int(input("x="))))