Python 面向对象概念及二分法查找练习

一、面向对象

概念:

面向对象在编程的时候尽可能去模拟现实世界,其中任何一个操作都需要一个实体来完成,实体就是动作的支配者,没有实体没有动作发生。

面向过程向面向对象的思想迁移:

  • 以前面向过程编写代码:首先考虑实现什么功能,然后调用什么函数,最后按部就班的实现需求。

  • 以后面向对象编写代码:

    • 首先考虑有什么样的实体去实现什么样的功能

    • 然后分装实体的属性及功能

    • 通过实体实现对应功能

面向过程和面向对象的区别:

  • 面向过程与面向对象都可以实现模块化编程代买也可以重用,但是面向对象的模块化更深,数据更封闭更安全。

  • 现象对象的思维方式更加贴近现实生活,更容易解决大型的复杂业务逻辑。

  • 从前期开发角度来说,面向对象比面向过程更复杂,但从维护或扩展的角度来说,面向对象远比面向过程简单。

  • 面向过程的代码执行效率更高。

二、对象(object)

  • 概念:是一种抽象概念,对象是类实例化的结果

  • 对象分为2部分

    • 静态属性:客观存在,不可忽视,如:人的姓名、性别……

    • 动态属性:行为,对象执行动作,如:人能跑步

  • 总结:对象使用属性保存数据,对象使用方法管理数据

方法重写:

扩展特性:继承让子类继承父类的所有公共属性和方法,但仅仅是为了继承而继承,继承就没有实际意义,应该在继承后,子类拥有一些自己的属性好方法。

三、练习

将二分法查找按照面向对象的思想重写,要求:输入一个整数列表,进行二分法查找。

class Half_Find():
def __init__(self, list1, num1):
self.list1 = list1
self.num1 = num1

def h_find(self):
if len(self.list1) == 0 or len(self.num1) == 0:
return '数据不能为空'

self.num1 = int(self.num1)
self.list1 = list(self.list1)
self.list1 = [int(self.list1[i]) for i in range(len(self.list1))]

self.list1.sort()

i = 0
j = len(self.list1) - 1
while i <= j:
mid = (i + j) // 2
if self.list1[mid] == self.num1:
return '找到了,值:', self.num1

else:
if self.num1 < self.list1[mid]:
j = mid - 1
else:
i = mid + 1
if i > j:
return '未找到'

if __name__ == '__main__':
li = input('请输入整数列表:')
num = input('请输入需要查找数字:')
find1 = Half_Find(li, num)
print(find1.h_find())

你可能感兴趣的:(python,开发语言)