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())

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值