day19作业

这篇博客包含了四个Python编程练习,从创建一个简单的计算器类到设计点、矩形类,再到实现时间类的加法操作。此外,还提出了一款人狗大战的小游戏设计,涉及人物和狗的属性及攻击方法。
摘要由CSDN通过智能技术生成

‘’’
1.刘凯买了了⼀一台玫瑰红phone10,价值8000元,可以打电话、玩游戏
‘’’

class Person:
    def __init__(self,name,gender):
        self.name=name
        self.gender=gender
    def buy_phone(self,phone):
        self.phone=phone
        print('{}买了一部{}手机'.format(self.name,phone.kind))
    def call(self,phonenumber):
        phone.call(phonenumber)
    def play(self, game_name):
        phone.game(game_name)

class Phone(object):
    def __init__(self, kind, color, money):
        self.kind = kind
        self.color = color
        self.money = money
    def call(self,phonenumber):
        print('正在打电话:',phonenumber)
    def game(self,game_name):
        print(f'{game_name}真好玩!')





if __name__ == '__main__':
    p=Person('刘凯','男')
    phone=Phone('iphone10','红',8000)
    p.buy_phone(phone)
    p.call('1234567')
    p.play('消消乐')

‘’‘2.写⼀一个计算器器类,可以进⾏行行加、减、乘、除计算’’’

class Caculate(object):
    # 初始化参数
    def __init__(self,x,y):
        self.x=x
        self.y=y
    def add(self):
        return self.x+self.y
    def minus(self):
        return self.x-self.y
    def multiply(self):
        return  self.x*self.y
    def divide(self):
        try:
            return self.x / self.y
        except:
            return '分母不能为零'
if __name__ == '__main__':
    c=Caculate(9,0)
    print(c.divide())
    print(c.add())
    print(c.minus())
    print(c.multiply())

‘’‘3.设计两个类:
⼀一个点类,属性包括xy坐标。
⼀一个Rectangle类(矩形),属性有左上⻆角和右下⻆角的坐标,可以计算矩形的⾯面
积;可以判断点是否在正⽅方形内
实例例化⼀一个点,⼀一个正⽅方形,输出正⽅方形的⾯面积,输出点是否在正⽅方形内’’’

class Dot:
    # 初始化参数
    def __init__(self,x,y):
        self.x = x
        self.y = y
class Rectangle:
    # 初始化参数
    def __init__(self,left,right):
        self.left=left
        self.right=right
    #计算面积
    def area(self):
        return abs(self.right.x-self.left.x)*abs(self.right.y-self.left.y)
    #     判断点是否在矩形中
    def judge(self,dot):
        if dot.x>=self.left.x and dot.x<=self.right.x and dot.y<=self.left.y and dot.y>=self.right.y:
            return True
        else:
            return False

if __name__ == '__main__':
    left=Dot(2,5)
    right=Dot(6,10)
    d = Dot(3, 5)
    rec=Rectangle(left,right)
    print(rec.area())
    print(rec.judge(d))

‘’’
4.定义⼀一个Time类,成员属性包括:时、分、秒;成员⽅方法:
add_hour(self,num) 把⼩小时加num add_minute(self,num) 把分钟加num
add_second(self,num) 把秒数加num 重写__str(self)__ ⽅方法,返回格式化的时
间字符串串:“04:16:09”
‘’’

class Time:
    '''初始化参数时分秒'''
    def __init__(self,hour,minute,second):
        self.hour=hour
        self.minute=minute
        self.second=second
        self.total=self.hour*3600+self.minute*60+self.second  #时间转化成秒数
    def add_hour(self,num):
        # 增加的小时数转换为秒数
        self.total+=num*3600
    def add_minute(self,num):
        # 增加的分钟数转换为秒数
        self.total += num*60
    def add_second(self,num):
        self.total+=num
    def __str__(self):
        return '{:0>2d}:{:0>2d}:{:0>2d}'.format(int(self.total//3600%24),int(self.total/60%60),int(self.total%60))
if __name__ == '__main__':
    t=Time(23,14,7)
    t.add_hour(2)
    t.add_minute(46)
    t.add_second(12)
    print(t)

‘’’
1.请写一个小游戏,人狗大站,2个角色,人和狗,游戏开始后,生成2个人,3条
狗,互相混战,人被狗咬了会掉血,狗被人打了也掉血,狗和人的攻击力,具备的
功能都不一样。
类:人
属性:人:攻击力(打)、生命值(血)
方法:打
类:狗;
属性:攻击力(咬)、生命值(血)
方法:咬
‘’’

import random
from random import randint
class Person:
    def __init__(self, name, attack, blood):
        self.name = name
        self.attack = attack
        self.blood = blood
        self.alive = True

    def hit(self, dog):
        if self.blood > 0:
            dog.blood -= self.attack
            print('人(name:{} attack{})打了狗(name:{} attack{}),狗剩余血量{}'.format(self.name, self.attack,
                                                                                             dog.name,
                                                                                            dog.attack,
                                                                                            dog.blood))
        else:
            self.alive = False


class Dog:
    def __init__(self, name, attack, blood):
        self.name = name
        self.attack = attack
        self.blood = blood
        self.alive = True

    def bit(self, person):
        if self.blood > 0:
            person.blood -= self.attack
            print('狗(name:{} attack{})咬了人(name:{} attack{}),人剩余血量{}'.format(self.name, self.attack,
                                                                                             person.name,
                                                                                            person.attack,
                                                                                            person.blood))
        else:
            self.alive = False


def main():
    dogs = []
    persons = []
    # 产生两个人,并添加到容器
    for i in range(1, 3):
        attack, blood = randint(10, 20), randint(200, 300)
        person = Person(i, attack, blood)
        persons.append(person)
    #    产生三条狗,并添加到容器
    for i in range(1, 4):
        attack, blood = randint(15, 30), randint(90, 150)
        dog = Dog(i, attack, blood)
        dogs.append(dog)

    # 判断是否有一方获胜
    while len(persons) != 0 and len(dogs) != 0:
        person = random.choice(persons)
        # 判断人是否死亡,死亡就移除
        if person.alive:
            dog = random.choice(dogs)
            # 判断狗是否死亡,死亡就移除
            if dog.alive:
                person.hit(dog)
                dog.bit(person)
            else:
                dogs.remove(dog)
        else:
            persons.remove(person)
    else:
        if len(persons) != 0:
            print('人获胜了')
        else:
            print('狗获胜了')


if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值