1 案例1:斐波那契数列
1.1 问题
编写fib.py脚本,实现以下目标:
斐波那契数列就是某一个数,总是前两个数之和,比如0,1,1,2,3,5,8 使用for循环和range函数编写一个程序,计算有10个数字的斐波那契数列 改进程序,要求用户输入一个数字,可以生成用户需要长度的斐波那契数列
1231.2 方案
本题主要是for循环语句,写法有如下两种:
1.输入一个变量确定列表长度,for循环用内置函数range确定循环次数,利用切片方法将列表fib最后两数之和追加到列表中,每循环一次追加一个值
2.for循环用内置函数range确定循环次数,每循环一次执行:将变量b的值赋值给变量a,并且将a b之和赋值给b,此时,a的新值是前一个b的值,b的新值是前面a b之和,让a成为数列中的值
1.3 步骤实现此案例需要按照如下步骤进行。
步骤一:编写脚本
[root@localhost day03]# vim fib.py #!/usr/bin/env python3 a, b = 0, 1 for i in range(10): print(a) a, b = b, a + b
123456或将上面的代码改为以下写法:
[root@localhost day03]# vim fib2.py #!/usr/bin/env python3 fib = [0, 1] l = int(input("数列长度: ")) for i in range(l - 2): fib.append(fib[-1] + fib[-2]) print(fib)
1234567或将上面的代码改为以下写法:
[root@localhost day03]# vim fib_func.py #!/usr/bin/env python3 def gen_fib(l): fib = [0, 1] for i in range(l - len(fib)): fib.append(fib[-1] + fib[-2]) return fib # 返回列表,不返回变量fib a = gen_fib(10) print(a) print('-' * 50) n = int(input("length: ")) print(gen_fib(n)) # 不会把变量n传入,是把n代表的值赋值给形参
123456789101112步骤二:测试脚本执行
[root@localhost day03]# python3 fib.py 0 1 1 2 3 5 8 13 21 34 [root@localhost day03]# python3 fib2.py 数列长度: 9 [0, 1, 1, 2, 3, 5, 8, 13, 21] [root@localhost day03]# python3 fib_func.py [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] -------------------------------------------------- length: 9 [0, 1, 1, 2, 3, 5, 8, 13, 21]
12345678910111213141516171819