前言
面向过程编程这个概念呢,可能比较抽象,也没有特别好的例子能够通俗易懂的呈现出来,只能够知道将要操作的具体步骤(功能)定义成函数,然后哪些流程需要哪些步骤直接调用就可以了;这样就算完成了面向过程编程;然而其本质就是函数编程。
面向过程
面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。
—摘自百度百科
练习
既然是函数编程,那么就练习练习将一些过程定义成函数或者练习一下函数如何使用
写一个函数用来比较两个数是否相等,返回True或者False
这练习函数和参数,还有return关键字
def compare_big(a,b):
if a == b:
return True
else:
return False
- 技巧一:在python编程中,没有三目运算,但是可以有这种表达方式:
def compare_big(a,b):
return True if a == b else False
- 技巧二:还记得之前的lambda匿名函数吗,所以还可以这样写:
x=lambda a,b:True if a == b else False
- 小结:是不是比最开始的时候,代码更简洁,这也就是python的魅力所在。
兔子产仔
一对兔子在两个月以后才有繁殖能力,一对兔子每个月生出一对兔子,假如所有兔子都不死,那么经过N个月以后总共有多少兔子?
第1个月--1对兔子
第2个月--1对兔子
第3个月--2对兔子:兔子开始生兔子了
第4个月--3对兔子:每个月,已有繁殖能力的兔子继续生兔子
第5个月--5对兔子:两个月前的小兔子,开始繁殖了
第6个月--8对兔子:每两个月的小兔子,开始繁殖了
第7个月--13对兔子:每个月的兔子,是前两个月的兔子总和,
规律就出来了:边界值是第1、2个月,兔子总和=当月的兔子减去前1个月的加上当月减去前2月的兔子
分析
这样数字的游戏,分析方法呢,就是通过计算看看前面数字的规律,那么结果可以得到:1、1、2、3、5、8、13…中间差就是从第三个月开始,是前两个月兔子的数量之和;这就涉及到一个函数递归的概念,这题就是斐波那契数列。
def rabbit(num):
if num==1 or num==2:
return 1
else:
return rabbit(num-1)+rabbit(num-2)
- 递归函数必须是调用函数本身,且有一个条件能够中止避免死循环。
总结
函数编程练习的重点是函数,但是在封装类之前,它只有一个名字,就是由def关键字定义的函数,同时呢,它的参数练习也是必不可少,如果想要这个函数做事灵活些,必然不能将参数写死(硬编码),需要灵活处理。