4.26学习笔记+作业

这篇博客探讨了Python函数的各个方面,包括函数定义、形参实参、位置参数与关键字参数的使用,强调了默认参数必须放置在最后。还提到了星号(*)和双星号(**)在参数传递中的作用,并给出了相关示例。此外,讨论了函数中的return语句、阶乘计算、斐波那契数列、二分查找等概念,最后布置了几个关于函数应用的练习题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数

#函数的定义

def hanshu(a,b):
    c=a+b
    return(c)
x=hanshu(1,2)
print(x)        #结果:3

a=5
def hanshu():
    return 5+a
a=6
def hanshu1():
    return 5+a
a=7
def hanshu2():
    return 5+a
print(hanshu())     #12
print(hanshu1())    #12
print(hanshu2())    #12
#这里a最后的赋值是7,最后打印的时候才走return,所以都是5+7=12

#形参实参

def func(a,b):  #a,b就表示形参
    c=a+b
    return c
x=func(1,2)     #这里的1,2与下面的3,4都代表的实参
y=func(3,4)
print(x,y)

#位置参数与关键字参数

def people(name,age,sex):
    print("我叫",name)
    print("年龄",age)
    print("性别",sex)
people("张三",19,"男")#位置参数必须一一对应
print()
people(sex="女",name="李四",age=29)#关键字参数k-v相互对应,所以,对位置没有要求
#关键字参数必须放在位置参数后面
def hanshu(a,b):
    c=a+b
    return c

x=hanshu(5,b=7)#关键字参数在位置参数后面所以可以正常运行
print(x)

# y=hanshu(a=5,7) #报错:SyntaxError: positional argument follows keyword argument
print(y)

#默认参数

def student(name,age,sex="男"):
    print(name,age,sex)
student("张三",19,"女")    #结果:张三 19 女
student("李四",20)        #结果:   李四 20 男

#在李四这一栏里并没有输入性别,但最后的结果会出现性别,就是因为在定义的时候已经默认了性别是男
# 如果后面参数中没有写性别,则使用默认的性别,写的话就使用写的性别
#另外注意默认的参数一定要放在最后面

*# 具有打散序列的功能

def func(a,b,c):
    print(a,b,c)
tup=(1,2,3)
func(*tup)#结果:1 2 3

tup=(1,2,3,4)
print(*tup) #结果:1 2 3 4

list=[1,2,3,4]
print(*list)    #结果:1 2 3 4

str="asdfg"
print(*str) #结果:a s d f g

def kb(a,b,*c):
    print(a)
    print(b)
    print(c)
kb(1,2,3,4,5,6,7) 

**# 结果:
1
2
(3, 4, 5, 6, 7)

kb(1,2)

# 结果:
1

2
()

#定义字典

def kb(a,**kwargs):
    print(a,kwargs)
kb(1,name="张三",age=19,sex="男")
kb(2,name="李四",age=20,id=1001)
kb(3)
#结果
1 {'name': '张三', 'age': 19, 'sex': '男'}
2 {'name': '李四', 'age': 20, 'id': 1001}
3 {}

def func(name,age):
    print(name,age)
a={"name":"张三","age":19}
func(**a)       #结果:张三 19

def jisuan(a,b):
    i=0
    while i<3:
        a=a+b
        return a
        i+=1
    return 10
x=jisuan(2,3)
print(x)    #结果:5  return具有结束的功能,因此只运行一次循环就结束了

def hanshu(a,b):
    c=a+b
    return c
    d=a-b
    return d
x=hanshu(2,3)
print(x)    #结果:5

#return具有结束的功能,因此d=a-b不运行

#阶乘

def jiecheng(n):
    if n==1:
        return 1
    else:
        return(n*jiecheng(n-1))
x=jiecheng(5)
print(x)    #结果:120

#斐波那契

def fbnq(n):
    if n==1 or n==2:
        return 1
    else:
        return fbnq(n-1)+fbnq(n-2)
for x in range(1,11):
    print("第",x,"个月兔子的个数是",fbnq(x))

#二分查找

def zbcz(a,start,end,key):
    mid=(start+end)//2
    if a[mid]==key:
        return mid
    elif a[mid]>key:
        return zbcz(a,start,mid-1,key)
    elif a[mid]<key:
        return zbcz(a,mid+1,end,key)
a=[1,2,3,4,5,6,7]
print(zbcz(a,0,len(a)-1,5))  

#作业
# 练习传递参数
# 1、写一个函数实现斐波那契数列(1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377…)
# 要求:接收一个参数,返回一个存着等量值的列表

def func(num):
    a=1
    b=1
    if num<=2:
        print(a,a+b,end=" ")
    else:
        while num>0:
            print(b,end=" ")
            a,b=b,a+b
            num-=1
func(10)
print()

# 2.计算任意多个数字的和
# 需求
# (1).定义一个函数 sum_numbers,可以接收的 任意多个整
# (2).功能要求:将传递的 所有数字累加 并且返回累加结果

def sum_numbers(*args):
    num=0
    for x in args:
        num+=x
    return num
print(sum_numbers(1,2,3))

# 3.使用递归,计算 1 + 2 + … num 的结果

def sum_numbers(num):
    if num==1:
        return 1
    else:
        num =num+sum_numbers(num-1)
        return num
print(sum_numbers(5))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值