36、37 这次好好做。

36:

0: 变量和函数

1:不同说法?   模具和用这个模具做出的物体  class A  是类  a = A()那么a是对象。 抽象和具体

2:种类 速度 颜色 大小 性格  错  前面的都是属性  问对象 那就是 波斯猫  咖啡猫  加菲猫  布偶猫 中华田园猫

3:长 宽 求面积 求周长

4:抽象  符合面向对象的思维

5: 封装  不知道内部咋样 反正给了一堆接口 请使用

继承  可以继承其他类的属性

多态:  不同类的同名方法 其实并没有啥关系。

6:调用方法前要先调用类

7:

#

class Person():
def __init__(self):
self.name = "小甲鱼"


def print_name(self):
print(self.name)
a = Person()
a.print_name()

8:

class Rect():
    length = 5.00
    width = 4.00
    def setRect(self):
        print("请输入矩形的长和宽...")
        length = input("长:")
        width = input("宽:")

    def getRect(self):
        print("这个矩形的长是{.2},宽是{}".format(self.length,self.width))

    def getArea(self):
        print(self.length*self.width)


rect = Rect()
rect.getRect()
rect.setRect()
rect.getRect()
rect.getArea()

 

 

37讲!!!

0:多态

1:继承 class   a(classb)

2:固定对象

3:__私有化

4:__init__

5:没有实例化

6:

class Ticket():
        def __init__(self, weekend=False, child=False):
                self.exp = 100
                if weekend:
                        self.inc = 1.2
                else:
                        self.inc = 1
                if child:
                        self.discount = 0.5
                else:
                        self.discount = 1
        def calcPrice(self, num):
                return self.exp * self.inc * self.discount * num

>>> adult = Ticket()
>>> child = Ticket(child=True)
>>> print("2个成人 + 1个小孩平日票价为:%.2f" % (adult.calcPrice(2) + child.calcPrice(1)))
2个成人 + 1个小孩平日票价为:250.00

 

7:

import random

class turtle():
    def __init__(self):
        self.speed = random.randint(1,2)
        self.strength = 400
        self.x_pos = random.randint(0,10)
        self.y_pos = random.randint(0,10)
    def move(self):
        direc = random.randint(1,4)  #1表示向上,2表示左 3表示下 4表示右
        if direc == 1:
            if self.y_pos ==10:
                self.y_pos -= 1
            else:
                self.y_pos +=1
        if direc == 2:
            if self.x_pos ==0:
                self.x_pos += 1
            else:
                self.x_pos -= 1
        if direc == 3:
            if self.y_pos ==0:
                self.y_pos += 1
            else:
                self.y_pos -=1
        if direc == 4:
            if self.x_pos ==10:
                self.x_pos -= 1
            else:
                self.x_pos += 1
        self.strength -= 1
    def get_fish(self):
        self.strength += 20
class Fish():
    def __init__(self):
        self.speed = 1
        self.x_pos = random.randint(0,10)
        self.y_pos = random.randint(0,10)
    def move(self):
        direc = random.randint(1,4)  #1表示向上,2表示左 3表示下 4表示右
        if direc == 1:
            if self.y_pos ==10:
                self.y_pos -= 1
            else:
                self.y_pos +=1
        if direc == 2:
            if self.x_pos ==0:
                self.x_pos += 1
            else:
                self.x_pos -= 1
        if direc == 3:
            if self.y_pos ==0:
                self.y_pos += 1
            else:
                self.y_pos -=1
        if direc == 4:
            if self.x_pos ==10:
                self.x_pos -= 1
            else:
                self.x_pos += 1

T1 = turtle()
fish = list()
for i in range(10):
    fish.append(Fish())
while(T1.strength >0 and len(fish)>0):
    T1.move()
    if T1.strength == 0:
        break
    T1.move()
    if T1.strength == 0:
        break       #这里设定体力为0时吃饭的力气都没了。
    pre_del = []
    for i in range(len(fish)):
        fish[i].move()
        if T1.x_pos == fish[i].x_pos and T1.y_pos == fish[i].y_pos:
            T1.get_fish()
            pre_del.append(i)
    fish = [y for x,y in enumerate(fish) if x not in pre_del]


if (T1.strength>0):
    print("游戏结束,乌龟胜利")
else:
    print("游戏结束,鱼儿胜利")

乌龟太难赢了...  所以加到了400 不知道是不是我写错了。

 

最难得就是删除元素  小甲鱼采用的是拷贝方法 我则用了一个笨方法。 用另一个列表来记载。

上一篇:CF16E Fish 状压dp + 概率


下一篇:ExpRe[20] 云服务器[1] 访问指定端口,端口转发