zoukankan      html  css  js  c++  java
  • 类和正则表达(自动更正、代数运算)

    1、面对对象编程:是一种程序设计范型,同时也是一种程序开发的方法,实现OOP的程序希望能够在程序中包含各种独立而又相互调用的对象,每一个对象又都应该能够接受数据、数据处理并将数据传达给其他对象,因此每一个对象都可以被看成一个小型的机器,而整个程序块系统就是由这些小的机器相互协助、组合构建起来的。

    2、面向对象分析:即根据抽象关键的问题域来分解系统。

    3、面向对象设计:是一种提供符号设计系统的面向对象的实现过程,它用非常接近时机领域属于的方法把系统构造成现实世界的对象。

    类(class)告诉python创建新类型的东西

    对象(object):两个意思,即最基本的东西,或者某样东西的实例

    对象(object):是数据和操作数据方法的结合。对象之间的通信:对象之间进行通信的结构叫做消息,当一个消息发送给某个对象时,应该包含以下几种信息:

    1)接收消息的对象名(目的对象名);2)接受消息去执行某种操作的信息(调用方法名);3)发送给该对象参数,参数可以使改对象有的变量名,或者是谁有对象都知道搜的全局变量名;4)发送给该对象的消息名(源消息名)

    类(class):对象的抽象是类,类的具体个性化就是对象。

    类的结构关系:1)一般/具体结构称为分类结构,也可以说是is-a关系。用来描述在继承中子类与父类的关系,即一个派生类的实例化对象是其父类的一个例子,所以是is-a关系;2)整体与部分结构称为组装结构,他们之间的关系是has a关系。组合是实现继承的方式之一,在组合继承中,一个子类可以有多个父类,即一个子类has  a 一个父类。

    面向对象的三要素:

    1、封装:概念:描述了对数据信息进行隐藏的观念,它对数据属性提供接口(接口函数)和访问方法。在类的设计时,微数据提供此相应的接口,一面向客户程序通过不规范的操作来存取封装的属性。

    我们一般用语法“def”定义封装内部的函数,之前认知是“程序 = 数据结构 + 算法”,加上简单的封装后,可以理解为“程序 = 对象 + 消息”。

    2、继承:概念:继承令不同类之间拥有了一定的结构与关系。

    类之间的关系:1)通过继承创建的新类称为“子类”或“派生类”;2)被继承的类称为“基类”、“父类”或“超类”。

    特有名词概念:1)泛化:表示所有子类与其父类及祖先类有着一样的特点;

                             2)特化:描述所有的子类的自定义,也就是说,什么属性让它与其父类一同;

                             3)实现继承的方式:可以通过继承和组合来实现,其中继承又有实现继承和可视继承,组合又有接口继承和纯虚类;

                             4)实现继承:子类的属性和方法完全继承与父类;

                             5)可视继承:子类继承父类的外观方法;

                             6)接口继承:子类的属性名和方法名继承于父类,但是具体的属性值和方法实现由子类重写;

                             7)多重继承:即组合继承,在java和c++中使用接口概念来实现多重继承的效果,而python中定义类的时候,可以直接继承多个父类来实现多重继承。在实现多重继承时,如果继承的多个父类中均有名称相同的方法时,需要注意继承的顺序。

    3、多态:概念:指出了不同对象如何通过他们共同的属性动作来操作以及访问,而不需要考虑他们的具体的类,多态表明了动态绑定(运行时)的存在,允许重载及运行时类型确定的验证。

    多态的作用:实现接口的重用,保证了在类发生继承或派生时,我们仍然能正确调用这些相关类的实例化对象的属性和方法。

    一、设计一个三维向量类,并实现向量的加法、减法以及向量与标量的乘法和除法:

    class vector3:
        def __init__(self, x_ = 0, y_ = 0, z_ = 0):
            self.x = x_
            self.y = y_
            self.z = z_
        def __add__(self, obj):
            return vector3(self.x+obj.x, self.y+obj.y, self.z+obj.z)
        def __sub__(self, obj):
            return vector3(self.x-obj.x, self.y-obj.y, self.z-obj.z)
        def __mul__(self, obj):
            return vector3(self.x*obj.x, self.y*obj.y, self.z*obj.z)
        def __pow__(self, obj):
            return vector3(self.y*obj.z-obj.y*self.z, self.z*obj.x-self.x*obj.z, self.x*obj.y-obj.x*self.y)
        def __str__(self):
            return str(self.x)+','+str(self.y)+','+str(self.z)
    v1 = vector3(1, 2, 3)
    v2 = vector3(0, 1, 2)
    print (v1 + v2)
    print (v1 - v2)
    print (v1 * v2)
    print (v1 ** v2)
    

    二、编写一个程序(类),用户输入一段英文,然后输出这段英文中所有长度为3个字母的单词,并且如果单词有连续重复了2次,只输出一个:

    import re
    a=[]
    words=input("Input the words:")
    l=re.split('[. ]+',words)
    i=0   
    for i in l:
        if len(i)==3: 
            if i not in a:
                a.append(i)
        else:
            continue
    for k in range(0,len(a)):
        print(a[k],end=' ')
    

  • 相关阅读:
    NYOJ 10 skiing DFS+DP
    51nod 1270 数组的最大代价
    HDU 4635 Strongly connected
    HDU 4612 Warm up
    POJ 3177 Redundant Paths
    HDU 1629 迷宫城堡
    uva 796
    uva 315
    POJ 3180 The Cow Prom
    POJ 1236 Network of Schools
  • 原文地址:https://www.cnblogs.com/cnn-ljc/p/13040576.html
Copyright © 2011-2022 走看看