python函数的练习

246 阅读2分钟

1、写一个函数,接收一个参数,用来返回这个函数的阶乘并输1*2*3*4*5

思路:

1.首先写一个函数,接受一个参数 def 函数名(参数):

2.需要返回值 在函数体内写 return 阶乘的变量名

3.阶乘:n*(n-1)*(n-2)*...*1 

4.每次乘数减一,用for...range()循环,使变量每次减一

5.用sum*=i 累乘  

6.最后返回sum 即为阶乘结果

源码:

def factorial(n):
    sum = 1
    for i in range(2, n + 1):
        sum = sum * i
        print(str(i-1) + '*', end='')
        if i == n:
            print(str(i))
    return sum


ret = factorial(5)
print(ret)

运行结果:


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

*********方法一**********

思路:

1.需要返回列表,先创建一个空列表

2.斐波那契数列,前两个数之和等于第三个数

3.需要用两个变量分别接收前两个数

4.然后用for循环,让另一个变量接收前两的值

5.因为第二次两数之和就相当于第二个数,第二个数就相当于第二次的第一个数

6.赋值:第二个变量的值赋值给第一个变量,和赋值给第二个变量

7.然后每次循环将和添加到列表中,最后打印列表

源码:

l = []
def fbnq(n):
    a = 0
    b = 1
    for i in range(n):
        c = a + b
        a = b
        b = c
        l.append(b)
    print(l)

fbnq(5)

运行结果:

***********第二种****************

每次执行移一位,因为下一次的时候,上一次的第三个数就相当于第二个数,第二个数就相当于第二次的第一个数

赋值:第二个变量的值赋值给第一个变量,和赋值给第二个变量,使用迭代如下:

源码:

l = [1, ]
def func(num, a=1, b=2):
    if num < 2:
        return
    else:
        l.append(b)
        func(num - 1, b, a + b)

func(5)

运行结果: