实验二 函数的定义和调用

实验二 函数的定义与调用

前言

  1. 掌握函数的定义
  2. 理解函数的返回值的应用和函数的调用
  3. 理解递归函数的用法

正文

第一题

编写程序,利用可变参数定义一个求任意个数数值的最大、小值的函数getMaxMin(a, b, *c)函数,并求出给出的元素个数,编写测试代码

在这里插入图片描述

def getMaxMin(a,b,*c):
    sum=1
    # 最大值默认是元组里第一个元素里的第一个值
    Max=c[0][0]
    # 最小值默认是元组里第一个元素里的第一个值
    Min=c[0][0]
    for i in range( 1, len ( c[0] ) ):
        if Max<c[0][i]:
            Max=c[0][i]
        if Min>c[0][i]:
            Min=c[0][i]
        sum=sum+1
    print("list={}".format(c[0]))
    print("最大值={},最小值={},元素个数={}".format(Max,Min,sum))

list1=[9,7,8,3,2,1,55,6]
getMaxMin(list1[0],list1[0],list1)
list2=['apple','pear','melon','kiwi']
getMaxMin(list2[0],list2[0],list2)
list3="TheQuickBrownFox"
getMaxMin(list3[0],list3[0],list3)
list4=(9,7,8,3,2,1,55,6)
getMaxMin(list4[0],list4[0],list4)

运行的效果如下图所示:

在这里插入图片描述

第二题

编写程序,定一个求斐波那契数列的函数fib(n),变编写测试代码,输出前20项(每项宽度5个字符位置,右对齐),每行输出10个。请分别用递归和非递归方式实现

在这里插入图片描述

#第一种方法:递归
def fib(n):
    if n==1 or n==2 :
        return 1
    else:
        return fib(n-1)+fib(n-2)

n=20
for i in range(1,n+1):
    if i==10:
        print("{:>5}".format(fib(i)))
    else:
        print("{:>5}".format(fib(i)),end="")
        
        
#第二种方法:非递归
def not_fib(n) :
    print ( "{:>5}".format ( 1 ) , end="" )
    print ( "{:>5}".format ( 1 ) , end="" )
    a = 1
    b = 1
    for i in range ( 3 , n + 1 ) :
        b = b + a
        a = b - a
        if i == 10 :
            print ( "{:>5}".format ( b ) )
        else :
            print ( "{:>5}".format ( b ) , end="" )

not_fib ( 20 )

运行的结果如下图所示:
在这里插入图片描述

总结

  1. 函数的概念
    函数是以组织的、具有特定功能的、可重复使用的单一或相关联功能的代码段,通过函数名来表示和调用,能够提高模块化和代码的复用

  2. 函数的定义
    在python中,通过保留字def来定义函数,基本语法如下:

    def <函数名>(<参数列表>):
    		<函数体>
    		return <返回值列表>
     
    
  3. 函数的参数传递
    根据实际参数类型不同,在实际函数调用过程中会因传递的对象不同,实际参数传递给形参的方式也不同,包括值传递和引用传递
    值传递
    参数传递时,实参为不可变对象,实参传递给形参后,程序运行结束,形参的值改变,而实参的值却不变,这种传递方式即为值传递。
    在Python中,数值类型int、float、字符串str、元组tuple、boole都是不可变对象。
    引用传递
    参数传递时,实参为可变对象,实参传递给形参后,程序运行结束,形参的值改变,实参值也改变,这种传递方式即为引用传递。
    在Python中,列表list、集合set、字典dict均是可变对象。

  4. 可变长度参数
    如果定义一个函数时,函数处理的参数个数比函数定义时的参数个数多,则函数定义时需要使用可变长度参数。
    可变长度参数在函数定义时主要有两种方式:*parameter和**parameter
    *parameter:函数可以接收任意个数的参数,函数会把多个位置参数值当成元组的形式传入。
    **parameter:函数可以接收任意个数的参数,函数会把关键字参数值当成字典的形式传入。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

&晨曦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值