文章目录
- 实验目的
- 一、定义函数
- 二、调用函数
- 三、参数的传递和函数的返回值
- 四、编写函数,输入不同的参数,绘制不同的科赫曲线
- 参考代码
- 实验截图
实验目的
- 掌握函数的定义和调用;
- 掌握函数的用法;
- 理解递归;
- 培养学生动手查阅资料能力和解决实际问题的能力和团队合作能力。
一、定义函数
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
定义函数的三种形式:
一、无参函数
定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名
在函数阶段括号内没有参数,称为无参函数。需要注意的是:定义时无参,意味着调用时也无需传入参数。
如果函数体代码逻辑不需要依赖外部传入的值,必须得定义成无参函数。
def func():
print('hello nick')
func() # hello nick
二、有参函数
在函数定义阶段括号内有参数,称为有参函数。需要注意的是:定义时有参,意味着调用时也必须传入参数。
如果函数体代码逻辑需要依赖外部传入的值,必须得定义成有参函数。
def sum_self(x, y):
"""求和"""
res = x+y
print(res)
sum_self(1,2) # 3
三、空函数
当你只知道你需要实现某个功能,但不知道该如何用代码实现时,你可以暂时写个空函数,然后先实现其他的功能。
def func():
Pass
二、调用函数
和C++一样,Python中函数的定义必须在调用的前面,但是在函数的内部调用一个函数,不用考虑函数的顺序,只要被调用的函数被定义了即可。
一、先定义后,后调用为一般方法:
def add_test(a,b):
return a+b
result = add_test(1,2)
print(result)
二、可以在函数内部调用后面的函数
def add_1(a,b):
return add_2(a,b) #函数内部调用add_2
def add_2(a,b):
return a+b
print ('add_1的调用:',add_1(1,2)) #3
print('add_2的调用:',add_2(2,3)) #5
三、不可以先调用后定义
print("add的调用",add(a,b))
def add(a,b):
return a+b
三、参数的传递和函数的返回值
函数:封装功能独立的代码,在需要时通过函数名被调用
参数:外界希望在函数内部处理的数据
a、位置参数:
实参的位置和形参保持一致,按形参声明的先后顺序一一赋值。
b、关键字参数:
调用函数的时候以 形参=实参的方式来传参,这个时候实参的顺序无所谓
函数根据有无参数和返回值,可以相互结合,共有4种组合形式
1.无参数,无返回值
2.无参数,有返回值
3.有参数,无返回值
4.有参数,有返回值
1、什么是返回值
a、返回值就是函数调用表达式的值,就是return关键字后面的表达式的值。返回值就是将函数里面的数据传递到函数外面。
b、Python中每个函数都有返回值,默认是None,如果遇到return ,return 后面是什么返回值就是什么。
return功能:
确定函数的返回值
结束函数,执行时遇到return,函数直接结束,并且将return后面的值作为函数返回值。
2、多个返回值
return 值1, 值2, 值3… 相当于返回一个元祖
def fun3():
return 1, 2, 3
fun3()
print(type(fun3()))
3、怎么确定函数是否需要返回值
函数执行完成后是否产生新的数据,如果产生新的数据就将这个数据用return返回。
四、编写函数,输入不同的参数,绘制不同的科赫曲线
参考代码
import turtle # 引入决解问题需要的工具——turtle作图包
# 定义turtle画笔和画布的参数
def huabi(i, h):
if i == 6:
turtle.pencolor('red')
turtle.speed(0) # speed()参数有[0,10]:“0”特殊、代表最快速度,其余[1,10]值越大、速度越快
elif i == 5:
turtle.pencolor('blue')
turtle.speed(10)
elif i == 4:
turtle.pencolor('purple')
turtle.speed(8)
elif i == 3:
turtle.pencolor('pink')
turtle.speed(6)
elif i == 2:
turtle.pencolor('green')
turtle.speed(4)
else:
turtle.speed(2)
turtle.pensize(2) # 设置画笔宽度为2
turtle.setup(800, 1200, 100,
10) # setup()参数有4个:前两个代表画布的“宽”和“高”,当数值为整数时、表示绝对像素大小,当小数时、表示站屏幕的比例。后两个可以省略,默认为屏幕中心位置,代表距离“屏幕左上角”的距离,单位是像素密度,
turtle.penup() # 抬起画笔,之后的画笔动作、就不会产生图线
turtle.goto(-300, h) # 以画布中心点为坐标原点(0,0),将画笔移动到坐标(-300,100)处
turtle.pendown() # 落下画笔,以便画图
# 定义“尖”
def koch(size, n):
if n == 0: # 0阶的科赫雪花曲线就是一条线,大小为输入的“size”
turtle.fd(size)
else: # 高阶科赫雪花曲线
for i in [0, 60, -120, 60]: # turtle在“尖”的四条线上改变的角度,分别为0°,60°,-120°,60°
turtle.left(i) # 对应上边四个角度,一共需要转4次弯,画出本阶的四条线,
koch(size / 3, n - 1) # 每个角度下的一个边,对应低一阶的客户雪花曲线的“尖”;至此完成函数本身的循环和复用,自动画出一个完整的n阶“尖”
# 定义main()主函数
def main(): # 设定参数接口
size = int(input("请输入尺寸:"))
h=int(input("请输入高:"))
for i in range(1, 7):
h = h - 150
huabi(i, h)
koch(size, i)
main() # 在设定参数之后,调用主函数