【Python】八、函数的使用


实验目的

  1. 掌握函数的定义和调用;
  2. 掌握函数的用法;
  3. 理解递归;
  4. 培养学生动手查阅资料能力和解决实际问题的能力和团队合作能力。

一、定义函数

       在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()  # 在设定参数之后,调用主函数

实验截图

在这里插入图片描述


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慢热型网友.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值