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

IPO

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

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

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

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

def compare2(x, y):
if x > y:
return x
else:
return y x = input()
y = input()
res = compare2(x, y) print(res)

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

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

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

编程

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

怎么找bug

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

debug的来源

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

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

面向对象编程

面向(对着)对象object编程

对象与对象之间交互

类和对象

对象

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

选课系统

'''
学生类:
姓名
身高
体重
年龄
技能:
选课 默默对象:
姓名:默默
身高:175
体重:140
年龄:21
技能:
选课
把妹 大炮对象:
姓名:大炮
身高:160
体重:240
年龄:38
技能:
选课
大炮 老师类:
姓名
身高
体重
年龄
技能:
上课 nick对象:
姓名:nick
身高:172
体重:120
年龄:31
技能:
上课
泡妞 '''

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

1000个对象,类小于1000种。

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

定义类

class Student:
def __init__(self,name,height,weight,age)
self.name=name
self.height=height
self.weight=weight
self.age=age def choose_course(self):
print(f'{self.name}正在选课')

定义对象

momo=Student('momo',170,130,21)
print(momo,name)
print(momo,height)
print(momo,weight)
print(momo.age)
momo.choose_course() dapao=Student('大炮',160,240,38)
print(dapao,name)
print(dapao,height)
print(dapao,weight)
print(dapao,age) dapao1=Student('大炮',160,240,38)
print(dapao1.name)
print(dapao1.height)
print(dapao1.weight)
print(dapao1.age)

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

定义类语法

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

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

类定义阶段:执行代码

定义对象 (实例化对象)

stu1=Student() # stu1就是一个对象

print('stu1:',stu1)
print(stu1.school)
print(id(stu1.school))
stu1.choose_course() # 对象使用类中的方法时,不需要加参数,因为实例化对象调用该方法时,python会自动将该实例化对象传给self stu2=Student()
print('stu2:',stu2)
print(stu2.school)
print(id(stu2.school))
stu2.choose_choose() '''
函数对象
x=10
y=x
print(y) def x():
print('from f1') y=x
y() '''

定制对象独有特征

stu1=Student()
stu1.name='momo'
stu1.height=160
stu1.weight=170
print(stu1.name)
print(stu1.weight) stu2=Student
stu2.name='dapao'
stu2.height=160
stu2.weiht=240
print(stu2.name)
print(stu2.weight)
class Student():
school='oldboy' def choose_course(self):
print('正在选课') def init(obj,name,height,weight):
obj.name=name
obj.height=height
obj.weight=weight stu1=Student()
init(stu1,'momo','175','140')# init是你用来给对象添加独有特征的函数
print(stu1.name)
print(stu1.height)
print(stu1.weight) stu2=Student()
init(stu2,'dapao','160','240')# init是你用来给对象添加独有特征的函数
print(stu2.name)
print(stu2.height)
print(stu2.weight) class Student():
school='oldboy' def __init__(self,name,height,weight):
print(self)
self.name=name # self=stul --> stu1.name='dapao'
self.height=height
self.weight=weight def choose_course(self):
print('正在选课') stu1=Student('momo',175,140)
print('stu1:',stu1)
print('stu1.name',stu1) stu2=Student('dapao',160,240)
print('stu2:',stu2)
print('stu2.name',stu2)

LeetCode检测机制

class Solution:
def twoSum(self,nums:list,target:int) --> list:
for i in range(len(sums),-1,-1): # for i in range=(4) == for i in [0,1,2,3]:
for j in range(i+1,len(nums)): #[1,2,3]
if num[i]+nums[j] == target:
return[i,j] def main(nums,target,result):
s = Solution()
res = s.twoSum(nums,target)
if res == result:
print('通过') def main2():
main([2, 7, 11, 15], 9, [0, 1])
main([1, 2, 3], 3, [0, 1])
main([1, 2, 3], 3, [0, 1])
main([1, 2, 3], 3, [0, 1])
main([1, 2, 3], 3, [0, 1])
main([1, 2, 3], 3, [0, 1])
main([1, 2, 3], 3, [0, 1]) 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. Docker 安装 ActiveMQ

    搜索 ActiveMQ 镜像 docker search activemq 获取 ActiveMQ 镜像 docker pull webcenter/activemq 查看本地镜像 docker im ...

  2. Eclipse4.2juno安装git

    因为项目需要,需要再Eclipse4.2juno上面安装git,试了几次都没有成功,网上搜了下,结合报错发现,Eclipse4.2juno支持的最高版本是git3.2,因此,选选择3.2版本的git安 ...

  3. leetcode No.500 键盘行 keyboard-row (Python3实现)

    题目描述 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词.键盘如下图所示. 示例: 输入: ["Hello", "Alaska", " ...

  4. MySQL 使用 ON UPDATE CURRENT_TIMESTAMP 自动更新 timestamp (转)

    原文地址: https://blog.csdn.net/heatdeath/article/details/79833492 `create_time` timestamp not null defa ...

  5. OpenStack(一)——OpenStack的相关概念

    (1).OpenStack概述 OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目. OpenStack是 ...

  6. requests库学习案例

    requests库使用流程 使用流程/编码流程 1.指定url 2.基于requests模块发起请求 3.获取响应对象中的数据值 4.持久化存储 分析案例 需求:爬取搜狗首页的页面数据 # 爬取搜狗首 ...

  7. java https post请求并忽略证书,参数放在body中

    1 新建java类,作用是绕过证书用 package cn.smartercampus.core.util; import java.security.cert.CertificateExceptio ...

  8. VUE 同一页面路由参数变化,视图不刷新的解决方案

    1.监听路由处理 watch: { $route(to, from) { // 逻辑 // 重新调用数据接口 } }, 2.beforeRouteUpdate导航守卫 路由更新时触发 beforeRo ...

  9. Django-07-Model操作

    一.数据库的配置 1. 数据库支持 django默认支持sqlite.mysql.oracle.postgresql数据库  <1> sqlite django默认使用sqlite的数据库 ...

  10. GoLang基础数据类型---字典

    Map 是 Go 中的内置类型,它将键与值绑定到一起.可以通过键获取相应的值. 如何创建 map? 可以通过将键和值的类型传递给内置函数 make 来创建一个 map.语法为:make(map[Key ...