零基础学python编程思维(五) | 函数

一、定义函数

一般定义函数的格式为:

​​​​​​​def 函数名(参数列表):
    函数体

创建函数的规则:

1. 使用def来创建函数;
2. 函数名只包含字符和_ (下划线);
3. 在函数名后面放((左圆括号),左圆括号后面放参数(argument),参数之间以逗号隔开;
4. 每个参数都是唯一的;
5. 在参数后面放)(右圆括号)和 :(冒号);
6. 在与这个函数相关的代码行前面加上四个空格的缩进(不能多,也不能少);
7. 通过另起一行不缩进来结束函数。

赋值的几种不同方式:

def cheese_and_crackers(cheese_count, boxes_of_crackers):
    print(f"You have {cheese_count} cheeses!")
    print(f"You have {boxes_of_crackers} boxes of crackers!")
    print("Man that's enough for a party!")
    print("Get a blanket.\n")

print("We can just give the function numbers directly:")
cheese_and_crackers(20, 30)  #可以直接给数字

print("OR, we can use variables from our script:")
amount_of_cheese = 10
amount_of_crackers = 50

cheese_and_crackers(amount_of_cheese, amount_of_crackers)  #可以给变量

print("We can even do math inside too:")
cheese_and_crackers(10+20, 5+6)   #可以是数学运算

print("And we can combin the two, variables and math:")
#甚至数学运算和变量的结合
cheese_and_crackers(amount_of_cheese + 100, amount_of_crackers + 100)

二、递归函数

若在一个函数内部调用自身本身。这个函数就是递归函数。

如计算阶乘n!=1*2*3*...*n,用函数fact(n)表示,可以看出:fact(n)=n!=1*2*3*...*(n-1)*n=(n-1)!*n=fact(n-1)*n,故fact(n)可表示为n*fact(n-1),只有n=1时需特殊处理,因此fact(n)用递归的方式写出来即为:

def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)

所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归函数清晰。递归函数的优点就是是定义简单,逻辑清晰。

一个经典的小练习:

汉诺塔的移动可以用递归函数非常简单的实现,编写move(n, a, b, c),接收参数n表示3个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法,如:

if n == 1:
    print(a, '-->', c)

 以下答案仅供参考:

def move(n, a, b, c):
    if n == 1:                   #如果n=1,直接从a到c
        print(a, '-->', c)
    else:
        move(n-1, a, c, b)       #从A柱通过C柱移动n-1个到B柱
        move(1, a, b, c)         #将A柱最后一个移动到C柱
        move(n-1, b, a, c)       #从B柱通过A柱移动n-1个到C柱
    return                       #至此移动完成return
move(3, 'A', 'B', 'C')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值