面向过程编程:面向(对着)--》过程(流程/步骤)--》编程(码代码)

IPO

Input(输入)--》Process(过程/处理)--》Output(输出)

塑料(定义变量) --》 (融化 --》 丢到瓶子的摸具里面) --》瓶子(输出结果)

类似于车间(流水线的工作过程)--》面向对象编程

未来码代码的目的:输入一些变量,然后会通过一系列的步骤改变变量,然后得到你想要的结果

  1. def compare2(x, y):
  2. if x > y:
  3. return x
  4. else:
  5. return y
  6. x = input()
  7. y = input()
  8. res = compare2(x, y)
  9. print(res)

面向过程编程:一步一步(一个函数一个函数),上一个函数的输出是下一个函数的输入

优点:代码的独立性提高了,流程清晰

缺点:一个错误,让程序直接崩掉了

编程

控制变量不断地变化(初级开发)

怎么找bug

  1. x = 10
  2. y = 20
  3. # 流程1
  4. # 变量没变化一次,就打印一次,
  5. # 流程2
  6. # 流程(方法有无数种)--》需求的实现是多样化的,压根就没有唯一解
  7. res = 50

debug的来源

  1. 定位bug,不一定是那一行出错了
  2. 打印变量变化的状态,判断该流程是否有问题

计算机永远不会出错,出了问题,一定是自己的代码逻辑有问题

面向对象编程

面向(对着)对象object编程

对象与对象之间交互

类和对象

对象

一系列特征(属性)和技能(方法)的结合体

选课系统

  1. '''
  2. 学生类:
  3. 姓名
  4. 身高
  5. 体重
  6. 年龄
  7. 技能:
  8. 选课
  9. 默默对象:
  10. 姓名:默默
  11. 身高:175
  12. 体重:140
  13. 年龄:21
  14. 技能:
  15. 选课
  16. 把妹
  17. 大炮对象:
  18. 姓名:大炮
  19. 身高:160
  20. 体重:240
  21. 年龄:38
  22. 技能:
  23. 选课
  24. 大炮
  25. 老师类:
  26. 姓名
  27. 身高
  28. 体重
  29. 年龄
  30. 技能:
  31. 上课
  32. nick对象:
  33. 姓名:nick
  34. 身高:172
  35. 体重:120
  36. 年龄:31
  37. 技能:
  38. 上课
  39. 泡妞
  40. '''

(模板/类别)划分了对象,具有相同的属性和技能的对象属于同一类(自己控制)

1000个对象,类小于1000种。

现实世界先有对象才会有类,但是python种先有类后才有对象

定义类

  1. class Student:
  2. def __init__(self,name,height,weight,age)
  3. self.name=name
  4. self.height=height
  5. self.weight=weight
  6. self.age=age
  7. def choose_course(self):
  8. print(f'{self.name}正在选课')

定义对象

  1. momo=Student('momo',170,130,21)
  2. print(momo,name)
  3. print(momo,height)
  4. print(momo,weight)
  5. print(momo.age)
  6. momo.choose_course()
  7. dapao=Student('大炮',160,240,38)
  8. print(dapao,name)
  9. print(dapao,height)
  10. print(dapao,weight)
  11. print(dapao,age)
  12. dapao1=Student('大炮',160,240,38)
  13. print(dapao1.name)
  14. print(dapao1.height)
  15. print(dapao1.weight)
  16. print(dapao1.age)

如果该对象属于这个类,那么类拥有的,对象一定拥有

定义类语法

  1. '''
  2. class 类名(驼峰体):
  3. school='odboy' # 定义变量(给类添加属性)
  4. def choose_course(self): # 定义在类内部的函数一般称为方法(给类增加技能)
  5. '''
  6. class Student:
  7. '''注释:学生类'''
  8. school='oldboy' # 定义变量(给类添加属性)
  9. def choose_course(self): # 定义在类内部的函数一般称为方法(给类增加技能)
  10. print(self)
  11. print('选择课程')
  12. stu_dict=Student.__dict__ # 获取类的所有属性和方法
  13. print(stu_dict)
  14. print(stu_dict['school']) # 获取学校
  15. stu_dict['choose_course'](123)
  16. print(Student.__doc__)

函数定义阶段:检测语法,不执行代码

类定义阶段:执行代码

定义对象 (实例化对象)

  1. stu1=Student() # stu1就是一个对象
  2. print('stu1:',stu1)
  3. print(stu1.school)
  4. print(id(stu1.school))
  5. stu1.choose_course() # 对象使用类中的方法时,不需要加参数,因为实例化对象调用该方法时,python会自动将该实例化对象传给self
  6. stu2=Student()
  7. print('stu2:',stu2)
  8. print(stu2.school)
  9. print(id(stu2.school))
  10. stu2.choose_choose()
  11. '''
  12. 函数对象
  13. x=10
  14. y=x
  15. print(y)
  16. def x():
  17. print('from f1')
  18. y=x
  19. y()
  20. '''

定制对象独有特征

  1. stu1=Student()
  2. stu1.name='momo'
  3. stu1.height=160
  4. stu1.weight=170
  5. print(stu1.name)
  6. print(stu1.weight)
  7. stu2=Student
  8. stu2.name='dapao'
  9. stu2.height=160
  10. stu2.weiht=240
  11. print(stu2.name)
  12. print(stu2.weight)
  13. class Student():
  14. school='oldboy'
  15. def choose_course(self):
  16. print('正在选课')
  17. def init(obj,name,height,weight):
  18. obj.name=name
  19. obj.height=height
  20. obj.weight=weight
  21. stu1=Student()
  22. init(stu1,'momo','175','140')# init是你用来给对象添加独有特征的函数
  23. print(stu1.name)
  24. print(stu1.height)
  25. print(stu1.weight)
  26. stu2=Student()
  27. init(stu2,'dapao','160','240')# init是你用来给对象添加独有特征的函数
  28. print(stu2.name)
  29. print(stu2.height)
  30. print(stu2.weight)
  31. class Student():
  32. school='oldboy'
  33. def __init__(self,name,height,weight):
  34. print(self)
  35. self.name=name # self=stul --> stu1.name='dapao'
  36. self.height=height
  37. self.weight=weight
  38. def choose_course(self):
  39. print('正在选课')
  40. stu1=Student('momo',175,140)
  41. print('stu1:',stu1)
  42. print('stu1.name',stu1)
  43. stu2=Student('dapao',160,240)
  44. print('stu2:',stu2)
  45. print('stu2.name',stu2)

LeetCode检测机制

  1. class Solution:
  2. def twoSum(self,nums:list,target:int) --> list:
  3. for i in range(len(sums),-1,-1): # for i in range=(4) == for i in [0,1,2,3]:
  4. for j in range(i+1,len(nums)): #[1,2,3]
  5. if num[i]+nums[j] == target:
  6. return[i,j]
  7. def main(nums,target,result):
  8. s = Solution()
  9. res = s.twoSum(nums,target)
  10. if res == result:
  11. print('通过')
  12. def main2():
  13. main([2, 7, 11, 15], 9, [0, 1])
  14. main([1, 2, 3], 3, [0, 1])
  15. main([1, 2, 3], 3, [0, 1])
  16. main([1, 2, 3], 3, [0, 1])
  17. main([1, 2, 3], 3, [0, 1])
  18. main([1, 2, 3], 3, [0, 1])
  19. main([1, 2, 3], 3, [0, 1])
  20. main2()

day 10 预科的更多相关文章

  1. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  2. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  3. ArcGIS 10.0紧凑型切片读写方法

    首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...

  4. CI Weekly #10 | 2017 DevOps 趋势预测

    2016 年的最后几个工作日,我们对 flow.ci Android & iOS 项目做了一些优化与修复: iOS 镜像 cocoapods 版本更新: fir iOS上传插件时间问题修复: ...

  5. 10个最好用的HTML/CSS 工具、插件和资料库

    大家在使用HTML/CSS开发项目的过程中,有使用过哪些工具,插件和库?下面介绍的10种HTML/CSS工具,插件和资料库,是国外程序员经常用到的. Firebug Lite FirebugLite ...

  6. 【Win 10 应用开发】启动远程设备上的应用

    这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393 ...

  7. 在Ubuntu 16.10安装mysql workbench报未安装软件包 libpng12-0错误

    1.安装mysql workbench,提示未安装软件包 libpng12-0 下载了MySQL Workbench 6.3.8   在安装的时候报错: -1ubu1604-amd64.deb 提示: ...

  8. Ubuntu 16.10 安装byzanz截取动态效果图工具

    1.了解byzanz截取动态效果图工具 byzanz能制作文件小,清晰的GIF动态效果图,不足就是,目前只能通过输入命令方式来录制. byzanz主要的参数选项有: -d, --duration=SE ...

  9. Ubuntu 16.10 安装KolourPaint 4画图工具

    KolourPaint 4画图工具简单实用,可以绘画.视频处理和图标编辑: • 绘画:绘制图表和“手绘” • 视频处理:编辑截图和照片;应用特效 • 图标编辑:绘画剪贴和标识透明化 1.在Ubuntu ...

随机推荐

  1. Sword CRC算法原理

    CRC校验原理 CRC校验其根本思想a.发送端和接收端约定一个整数 bb.发送端在原始数据帧后面附加一个数 k ,产生一个新的数据帧c.接收端接收到数据帧后,对接收的数据帧和整数 b 进行位异或操作, ...

  2. 【jmeter】使用csv文件生成用户名和密码列表

    介绍 在[jmeter]使用jmeter进行测试-示例 中介绍了jmeter的基本使用,本文将介绍如何使用csv文件生成多个用户名. 应用场景 实际测试中,经常需要模拟多个用户进行负载测试,而用户名和 ...

  3. laydate.render报错:日期格式不合法

    在使用laydate渲染日期时: laydate.render({ elem: '#day' }); 提示日期格式不合法 需要使用 too.dateType()来包装 <input type=& ...

  4. [转]解决 gem install 安装失败

    链接地址:https://blog.csdn.net/weixin_42414461/article/details/85337465

  5. BatchConfigTool批量配置工具

    海康批量配置工具BatchConfigTool是一款支持设备在线搜索.批量配置参数.批量升级等功能的软件,支持对大批量设备同时进行各参数的配置,极大的简化了操作过程! 软件功能 1.对在线设备进行搜索 ...

  6. MBR和GPT分区

    MBR是传统的分区表类型,最大缺点是不支持容量大于2T的硬盘.GPT则弥补了MBR这个缺点,最大支持18EB的硬盘,是基于UEFI使用的磁盘分区架构. 其中,目前所有的Windows系统均支持MBR, ...

  7. 写代码如何合理使用和优化我们的机器资源(CPU、内存、网络、磁盘)

    写代码脑子一定要绷紧一根弦,认知到我们所在的机器资源是有限的.机器资源有哪些?CPU.内存.网络.磁盘等,如果不做好保护控制工作,一旦某一资源满负荷,很容易导致出现线上问题. 1 CPU 资源怎么限制 ...

  8. 【记录】【mysql】的REPLACE()用法

    操作前数据 操作 UPDATE `test_replace` SET PASSWORD ') WHERE id REPLACE(PASSWORD, '1', '77')意思就是password中的1替 ...

  9. Nginx+Keepalived实现web服务器高可用

    1.Nginx 业务背景 现公司需求快速搭建web服务器,对外提供给用户web服务. 需求拆分 需要基于http协议的软件,搭建服务实现 介绍 常见用法: 1) web服务器软件 httpd http ...

  10. day01——python初始、变量、常量、注释、基础数据类型、输入、if

    python的历史: 04年Django框架诞生了 内存回收机制是什么(面试题) python2:源码不统一,有重复的功能代码 python3:没有重复的功能代码 python是一个什么的编程语言 编 ...