Python第二期-day07

函数参数

# 必须参数 : 参数的声明和调用时的顺序要保持一致
def showInfo(name, age, addr, money):
    age += 1
    print(f'姓名: {name},  年龄: {age} ,  地址:  {addr}, 余额: {money}')
showInfo("Bob", 18, "铁岭的", 888)
# showInfo( 888, "Bob", 18, "铁岭的") # 错误
# 关键字参数: 参数的声明和调用时的顺序可以不一致
showInfo(money=9.9, addr='北京的', name='Eric', age=19)
showInfo("李四", 23, "上海的", money=22)
# showInfo(name="李四", 23, "上海的", money=22) # 错误
# 默认参数:   参数的声明和调用时的个数可以不一致   默认参数要写到后面
def showInfo2(name, addr, age=0, money=0):
    print(f'姓名: {name},  年龄: {age} ,  地址:  {addr}, 余额: {money}')
showInfo2("刘能", "象牙山")
showInfo2("赵四", "象牙山", 40, 9999)
showInfo2("赵四", "象牙山", 40)
showInfo2("赵四", "象牙山", age=30, money=8888)#语义明确, 让人看的董
showInfo2(money=9.9, addr='北京的', name='HAHA', age=19)


递归函数

# 递归函数, 自己调用自己
# def f(n):
#     mySum = 0
#     for i in range(1, n+1):
#         mySum += i
#     return mySum
# print(f(100))
# print(f(5))

# 将要解决的事情变成最小单元
# 注意递归必须指定终止条件
def f(n):
    if n == 1:
        return 1
    return f(n-1) + n
print(f(100))
print(f(5))
# 使用递归 计算 n 的阶乘
def jieche(n):
    if n == 1:
        return 1
    return jieche(n-1)*n
print(jieche(3))
print(jieche(5))
# 求斐波那契数列  1, 1, 2, 3, 5, 8, 13, 21 的第n项
# fn = fn-1 + fn-2
def fibo(n):
    # if n==1 or n==2:
    if n in [1, 2]:
        return 1
    return fibo(n-1) + fibo(n-2)
print(fibo(3)) #2
print(fibo(4)) #3
print(fibo(5)) #5
print(fibo(6)) #8





```
```python
# 递归数组求和
from random import randint
ls = [randint(1, 20)for _ in range(10)]
print(ls)
print(sum(ls))

def arr_sum(ls):
    mySum = 0
    for i in ls:
        mySum += i
    return mySum
print(arr_sum(ls))

def qiuhe(ls):
    if len(ls) ==0:
        return 0
    if len(ls) == 1:
        return ls[0]
    return ls[0] + qiuhe(ls[1:])
print(qiuhe([]))
print(qiuhe(ls))

```
### 匿名函数和高阶函数
```python
#匿名函数   lambda 参数: 表达式
sums = lambda x, y: x + y
print(sums(12, 13))
# 高阶函数 : 函数本身的参数中至少有一个是函数
def cal(func, x, y):
    """
    :param func: 要求是一个函数
    :param x: 整数值
    :param y: 整数值
    :return: 对应关系的结果
    """
    return func(x, y)
def f1(x, y):
    return x + y
def f2(x, y):
    return x * y
print(cal(f1, 10, 20))
print(cal(f2, 10, 20))
print(cal(lambda x, y: x-y, 10, 20))

```
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值