Python【面向对象编程】-day3作业

作业1

代码:

"""1. 创建一个类Circle,具有radius实例属性【对象属性】
编写打印方法,返回属性值
编写实例方法,输出圆的面积
编写析构方法,输出"圆的半径不能为负数"""
from math import pi

class Circle:
    # 构造函数 初始化圆的半径
    def __init__(self,radius):
        self.radius=radius
    # 对象方法 显示圆的半径和面积
    def show(self):
        # 计算面积
        s=pi*(self.radius**2)
        print(f"半径为{self.radius}圆的面积为{s}")
    # 析构函数 在对象生命周期结束时执行
    def __del__(self):
        if self.radius<0:
            print(f"该圆的半径为{self.radius},圆的半径不能为负数")
    # 打印函数
    def __str__(self):
        return str(self.radius)
if __name__ == '__main__':
    # 实例化一个对象
    circle1=Circle(5)
    circle1.show()
    # 打印圆对象
    print(f"圆的半径是{circle1}")
    # 实例化半径<0的圆
    circle2=Circle(-3)

运行结果: 

D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\03 Python高级(3.19-)\zz作业\day3作业_01.py" 
半径为5圆的面积为78.53981633974483
圆的半径是5
该圆的半径为-3,圆的半径不能为负数

进程已结束,退出代码为 0

作业2

代码:

"""2. 定义一个狗类Dog
类属性:狗品种breed
定义一个有参的构造方法:有狗姓名name,狗年龄age两个实例属性
定义一个打印方法:返回'[name]、[age] the [breed] is barking!'
定义一个析构方法:输出我是析构方法
实例化一个对象调用打印方法"""
class Dog:
    # 类属性
    breed="泰迪"
    # 构造函数 初始化
    def __init__(self,name="..",age=0):
        self.name=name
        self.age=age
    # 打印函数 返回语句
    def __str__(self):
        return f"{self.name}、{self.age} the {self.breed} is barking!"
    # 析构函数
    def __del__(self):
        print("我是析构方法")
if __name__ == '__main__':
    # 实例化一个对象
    dog=Dog("Alice",3)
    print(dog)

运行结果:

D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\03 Python高级(3.19-)\zz作业\day3作业_02.py" 
Alice、3 the 泰迪 is barking!
我是析构方法

进程已结束,退出代码为 0

作业3

代码:

"""3. 要求设计一个学生类Student
类属性学校school,默认值为华清远见
属性有:姓名、html成绩、JavaScript成绩、python成绩
添加打印方法输出完整的学生信息
添加类方法用来修改类属性的值
添加求学生总分的方法
添加求学生平均分的方法
实例化一个学生对象,调用所有方法"""

class Student:
    # 类属性
    school="华清远见"
    # 类方法
    @classmethod
    def cls_fun(cls,x):
        cls.school=x

    # 构造函数 初始化
    def __init__(self,name="..",html=0,javascript=0,python=0):
        self.name=name
        self.html=html
        self.javascript=javascript
        self.python=python
    # 求总分
    def score_sum(self):
        sum_3=self.html+self.javascript+self.python
        return sum_3
    # 求平均分
    def score_avg(self):
        avg_3=(self.html+self.javascript+self.python)/3
        return avg_3
    # 打印函数 打印学生信息
    def __str__(self):
        return f"学校:{self.school}\n姓名:{self.name}\nhtml成绩:{self.html}\nJavaScript成绩:{self.javascript}\npython成绩:{self.python}\n总分:{self.score_sum()}\n平均分:{self.score_avg():.2f}"
if __name__ == '__main__':
    # 实例化一个对象
    stu=Student("Alice",82,88,95)
    print(stu.score_sum())
    print(stu.score_avg())
    print("===测试打印函数===")
    print(stu)
    print("===修改类属性===")
    stu.school="AI大学"
    print(stu)

运行结果:

D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\03 Python高级(3.19-)\zz作业\day3作业_03.py" 
265
88.33333333333333
===测试打印函数===
学校:华清远见
姓名:Alice
html成绩:82
JavaScript成绩:88
python成绩:95
总分:265
平均分:88.33
===修改类属性===
学校:AI大学
姓名:Alice
html成绩:82
JavaScript成绩:88
python成绩:95
总分:265
平均分:88.33

进程已结束,退出代码为 0

作业4

代码:

"""4. 定义一个Person类
定义一个类属性:国家,默认值为:中国
定义一个构造方法:设置姓名,年龄属性
定义一个静态方法,功能描述:输出“我们都是中国人”
定义一个类方法,用来获取类属性值
定义一个类方法,用来修改类属性值
定义一个打印方法,输出所有属性值
实例化一个对象调用所有方法"""
class Person:
    # 类属性
    country="中国"
    # 获取类属性
    @classmethod
    def get_property(cls):
        print(f"类属性:{cls.country}")
    # 修改类属性
    @classmethod
    def rew_property(cls,x):
        cls.country=x
        print(f"修改后的类属性:{cls.country}")
    # 构造函数
    def __init__(self,name="..",age=0):
        self.name=name
        self.age=age
    # 静态函数
    @staticmethod
    def sta_fun():
        print("我们都是中国人")
    # 打印方法 输出所有属性
    def __str__(self):
        return f"类属性:{self.country}\n姓名:{self.name}\n年龄:{self.age}"

if __name__ == '__main__':
    person=Person("朵朵",18)
    person.get_property()
    person.rew_property("China")
    person.sta_fun()
    print(person)

运行结果:

D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\03 Python高级(3.19-)\zz作业\day3作业_04.py" 
类属性:中国
修改后的类属性:China
我们都是中国人
类属性:China
姓名:朵朵
年龄:18

进程已结束,退出代码为 0

作业5

代码:

"""5. 有一个计算器类,具有运算功能,能对两个整数进行相加运算
有一个闹钟类,具有闹铃功能,能发出“懒猪起床”的声音
有一个手机类,需要同时拥有运算功能和闹铃功能,实现多继承
实例化一个手机类的对象,测试继承的两个功能"""

# 封装计算器类
class Calculator:
    # 整数相加
    def add(self,x,y):
        return x+y
# 封装闹钟类
class AlarmClock:
    def ring(self):
        print("懒猪起床")
# 封装手机类 继承计算器和闹钟类
class MobilePhone(Calculator, AlarmClock):
    pass

if __name__ == '__main__':
    # 实例化一个手机对象
    phone=MobilePhone()
    print("===测试计算功能===")
    print(phone.add(3,7))
    print("===测试闹钟功能===")
    phone.ring()

运行结果:

D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\03 Python高级(3.19-)\zz作业\day3作业_05.py" 
===测试计算功能===
10
===测试闹钟功能===
懒猪起床

进程已结束,退出代码为 0

作业6

代码:

"""6. 定义名为Fruit的类
编写构造方法,接收1个外部参数color
编写打印方法,返回属性值
编写Fruit的子类Apple,定义方法setColor,给color赋值
实例化子类对象,调用setColor方法"""

# 封装Fruit类
class Fruit:
    # 构造函数 接收外部参数
    def __init__(self,color):
        self.color=color
    def __str__(self):
        return self.color
# 封装子类Apple类
class Apple(Fruit):
    def __init__(self,color):
        super().__init__(color)
    # 定义方法 给color赋值
    def set_color(self,x):
        self.color=x

if __name__ == '__main__':
    # 实例化一个子类对象
    apple=Apple("white")
    # 赋色
    apple.set_color("red")
    print(apple)

运行结果:

D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\03 Python高级(3.19-)\zz作业\day3作业_06.py" 
red

进程已结束,退出代码为 0

作业7

代码:

"""7. 定义一个商品类
在构造方法中添加以下属性:ball_name(球类名称)、price(球类价格)、 number(存球数量,默认值为 100),
使用传参的方式对实例属性进行赋值
添加一个打印方法,格式化输出“球类:XXX(ball_name),价格:XX(price),目前存 球数量:XXX(number)”
添加一个析构方法,打印输出“本店已打烊,欢迎下次再来!”
添加一个实例方法 borrow,功能实现将存球数量减 5,并显示当前存球量
添加一个实例方法 restore(n),功能实现将存球量加 n,并显示当前存球量
添加一个实例方法 set_price(m),返回修改后球的价格
添加一个实例方法 get_number,如果存球量大于 100,则返回“本店将要打折处理 库存球”,
                         如果存球量小于 50,则返回“本店将要购买一批新球”,
                         其他则返回“正常营业!”
创建一个对象:bl = Ball(“篮球”,108,50)
循环调用 borrow 方法直到存球量<=0 时,当存球量为 0 时,输出“库存归 0, 请及时补充库存”
调用测试所有的实例方法"""
class Ball:
    # 构造方法
    def __init__(self,ball_name="..",price=0,number=100):
        self.ball_name=ball_name
        self.price=price
        self.number=number
    # 借球 -5 显示当前存球数量
    def borrow(self):
        if self.number >= 5:
            self.number-=5
            print(f"借球后,当前存球量:{self.number}")
        else:
            print("存球量不足,无法借球")
    # 还球 +n 显示当前存球数量
    def restore(self,n):
        self.number+=n
        print(f"还球后,当前存球量: {self.number}")
    # 修改球的价格
    def set_price(self,m):
        self.price=m
        print(f"修改后的球价格: {self.price}")
        return self.price
    # 判断存球量
    def get_number(self):
        if self.number>100:
            return "本店将要打折处理 库存球"
        elif self.number<50:
            return "本店将要购买一批新球"
        else:
            return "正常营业!"
    # 打印方法
    def __str__(self):
        return f"球类:{self.ball_name},价格:{self.price},目前存 球数量:{self.number}"
    # 析构方法
    def __del__(self):
        print("本店已打烊,欢迎下次再来!")
if __name__ == '__main__':
    bl = Ball("篮球", 108, 50)
    print("===测试循环调用borrow===")
    while bl.number>0:
        bl.borrow()
        print(bl)   #打印
        if bl.number==0:
            print("库存归 0, 请及时补充库存")
            
    print("===测试还球 和 判断存球量===")
    bl.restore(25)
    print(bl)
    print(bl.get_number())

    bl.restore(50)
    print(bl)
    print(bl.get_number())

    bl.restore(50)
    print(bl)
    print(bl.get_number())

    print("===测试修改价格===")
    bl.set_price(88)
    print(bl)

运行结果:

D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\03 Python高级(3.19-)\zz作业\day3作业_07.py" 
===测试循环调用borrow===
借球后,当前存球量:45
球类:篮球,价格:108,目前存 球数量:45
借球后,当前存球量:40
球类:篮球,价格:108,目前存 球数量:40
借球后,当前存球量:35
球类:篮球,价格:108,目前存 球数量:35
借球后,当前存球量:30
球类:篮球,价格:108,目前存 球数量:30
借球后,当前存球量:25
球类:篮球,价格:108,目前存 球数量:25
借球后,当前存球量:20
球类:篮球,价格:108,目前存 球数量:20
借球后,当前存球量:15
球类:篮球,价格:108,目前存 球数量:15
借球后,当前存球量:10
球类:篮球,价格:108,目前存 球数量:10
借球后,当前存球量:5
球类:篮球,价格:108,目前存 球数量:5
借球后,当前存球量:0
球类:篮球,价格:108,目前存 球数量:0
库存归 0, 请及时补充库存
===测试还球 和 判断存球量===
还球后,当前存球量: 25
球类:篮球,价格:108,目前存 球数量:25
本店将要购买一批新球
还球后,当前存球量: 75
球类:篮球,价格:108,目前存 球数量:75
正常营业!
还球后,当前存球量: 125
球类:篮球,价格:108,目前存 球数量:125
本店将要打折处理 库存球
===测试修改价格===
修改后的球价格: 88
球类:篮球,价格:88,目前存 球数量:125
本店已打烊,欢迎下次再来!

进程已结束,退出代码为 0

作业8

代码:

"""8. 定义一个信用卡类
用面向对象实现一个信用卡取款,存款,查余额的业务,具体要求如下:
1. 定义一个信用卡类,命名 Creditcard , 添加类属性 area,值为‘中国’
2. 添加魔法构造方法,默认值传参,对象属性及相应的默认值如下:
开户行 bank(默认值为空字符串),存款 money(默认为0),信用额度 credit( 默认为 1000)
3. 添加打印方法,按如下格式返回信息:
XX(area)发行的XX(bank)银行 卡,现存款XX(money)元,目前可以透支XX(credit)元
4. 添加一个进入账户的方法 enter(),无参有返。
用户从键盘输入用户名和密码,当 输入与以下设置相匹配正确时
账户:user 密码:200209,提醒登录成功,返回 布尔值True,否则 False,并提醒:不能使用此卡
5. 添加往卡内存钱的方法 save(n),n 为存入的钱数。
6. 添加提高信用额度的方法 setCredit(n),n 为新的可透支钱数。
7. 添加付款方法 buy(n),n 为要付款的钱数。函数内完成如下功能:
首先调用登录方法 enter()。登陆成功后,
提示:目前可以消费的额度为XX( money 与 credit 之和)。
9. 创建一个对象 js, 开户行为‘建设银行’。调用往卡内存钱的方法,存入 2000 元打印对象 js
10. 用提高信用额度的方法,把可透支钱数修改为 3000 运行一下付款方法 buy( 800)"""
class Creditcard:
    area="中国"
    # 构造方法
    def __init__(self,bank="",money=0,credit=1000):
        self.bank=bank
        self.money=money
        self.credit=credit
    # 打印方法
    def __str__(self):
        return f"{self.area}发行的{self.bank}银行卡,现存款{self.money}元,目前可以透支{self.credit}元"
    # 进入账户 无参 返回布尔值
    def enter(self):
        while True:
            name=input("请输入用户名:")
            pwd=input("请输入账户密码:")
            if name=="user" and pwd=="200209":
                print("登录成功")
                return True
            else:
                print("不能使用此卡")
                return False
    # 存钱
    def save(self,n):
        if n>0:
            self.money+=n
            print(f"本次存入{n}元,现存款{self.money}元")
        else:
            print("存入金额必须为正数")
    # 提高信用卡额度
    def setCredit(self,n):
        if n>0:
            self.credit=n
            print(f"现可透支额度为{self.credit}")
        else:
            print("信用额度必须为正数")
    #付款
    def buy(self,n):
        if n<=0:
            print("付款金额必须为正数")
        num=self.enter()
        if num:
            available_amount=self.money+self.credit
            print(f"目前可以消费的额度为{available_amount}元")
            if n<=available_amount:
                if n<=self.money:
                    self.money-=n
                else:
                    use_credit=n=self.money
                    self.money=0
                    self.credit-=use_credit
                print("支付成功!")
                print(f"存款余额为{self.money}元,可透支余额为{self.credit}元")
            else:
                print("余额不足,支付失败")
        else:
            print("账户无法使用")

if __name__ == '__main__':
    # 实例化一个对象
    js=Creditcard("建设银行")
    # 存钱
    js.save(2000)
    # 打印
    print(js)
    # 提高信用额度
    js.setCredit(3000)
    # 付款
    js.buy(800)

运行结果1:

进入账户失败

D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\03 Python高级(3.19-)\zz作业\day3作业_08.py" 
本次存入2000元,现存款2000元
中国发行的建设银行银行卡,现存款2000元,目前可以透支1000元
现可透支额度为3000
请输入用户名:use
请输入账户密码:123456
不能使用此卡
账户无法使用

进程已结束,退出代码为 0

运行结果2:

支付成功

D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\03 Python高级(3.19-)\zz作业\day3作业_08.py" 
本次存入2000元,现存款2000元
中国发行的建设银行银行卡,现存款2000元,目前可以透支1000元
现可透支额度为3000
请输入用户名:user
请输入账户密码:200209
登录成功
目前可以消费的额度为5000元
支付成功!
存款余额为1200元,可透支余额为3000元

进程已结束,退出代码为 0

运行结果3: 

js.buy(10000)--->余额不足 支付失败

D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\03 Python高级(3.19-)\zz作业\day3作业_08.py" 
本次存入2000元,现存款2000元
中国发行的建设银行银行卡,现存款2000元,目前可以透支1000元
现可透支额度为3000
请输入用户名:user
请输入账户密码:200209
登录成功
目前可以消费的额度为5000元
余额不足,支付失败

进程已结束,退出代码为 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值