首页 > 编程语言 >实验7 面向对象编程与内置模块

实验7 面向对象编程与内置模块

时间:2023-06-12 20:58:51浏览次数:42  
标签:__ info 内置 面向对象编程 self 模块 ._ print def

实验任务1

task1.py

程序源码:

 1 '''
 2 银行账户
 3 数据:持卡人姓名、账号、当前余额
 4 操作:取款、存款、打印账户信息、返回账户余额
 5 '''
 6 
 7 class Account:
 8     '''一个模拟银行账户的简单类'''
 9     def __init__(self, name, account_number, initial_amount = 10):
10         '''构造新账户'''
11         self._name = name
12         self._card_no = account_number
13         self._balance = initial_amount
14 
15     def deposit(self, amount):
16         '''存款'''
17         self._balance += amount
18 
19     def withdraw(self, amount):
20         '''取款'''
21         if self._balance < amount:
22             print('余额不足')
23             return
24         self._balance -= amount
25 
26     def info(self):
27         '''打印账户信息'''
28         print('持卡人姓名:', self._name)
29         print('持卡人账号:', self._card_no)
30         print('持卡人账户余额:', self._balance)
31 
32     def get_balance(self):
33         '''返回账户余额'''
34         return self._balance
35 
36 def main():
37     '''创建Account类对象,测试类'''
38 
39     print('测试账户1:'.center(30, '*'))
40     a1 = Account('Bob', '5002311', 20000)
41     a1.deposit(5000)
42     a1.withdraw(4000)
43     a1.info()
44 
45     print()
46 
47     print('测试账户2:'.center(30, '*'))
48     a2 = Account('Joe', '5006692', 20000)
49     a2.withdraw(10000)
50     a2.withdraw(5000)
51     a2.info()
52 
53 if __name__ == '__main__':
54         main()

运行测试截图:

1.类:具有相同属性和方法的对象的集合

属性:在类体内定义的变量

方法:在类内定义的函数

对象:类的实例

2.类的封装性:将众多属性和方法在类里面实现,外部通过接口访问

 实验任务2

shape.py

程序源码:

  1 '''
  2 shape.py是一个图形类模块
  3 包括:
  4 基类: 图形类Shape
  5 派生类: 矩形类Rect, 圆形类Circle, 三角形类Triangle
  6 '''
  7 
  8 class Shape:
  9     '''形状基类'''
 10     def info(self):
 11         '''打印图形信息'''
 12         pass
 13 
 14     def area(self):
 15         '''计算面积'''
 16         pass
 17 
 18     def perimeter(self):
 19         '''计算周长'''
 20         pass
 21 
 22 class Rect(Shape):
 23     '''
 24     矩形类, 继承自Shape
 25     属性:矩形左上角点的坐标、宽、高
 26     方法: 打印矩形信息,计算面积、周长
 27     '''
 28     def __init__(self, x = 0, y = 0, length = 2, width = 1):
 29         '''构造矩形对象,根据矩形左上角顶点坐标(x,y)和长、宽'''
 30         self._x = x
 31         self._y = y
 32         self._width = width
 33         self._length = length
 34 
 35     def info(self):
 36         print(f'矩形左上角顶点坐标: ({self._x}, {self._y})')
 37         print(f'矩形长: {self._length}')
 38         print(f'矩形宽: {self._width}')
 39 
 40     def area(self):
 41         return self._length * self._width
 42 
 43     def perimeter(self):
 44         return (self._length + self._width) * 2
 45 
 46 class Circle(Shape):
 47     '''
 48     圆形类,继承自Shape
 49     属性:圆心坐标、半径
 50     方法: 打印圆信息,计算面积、周长
 51     '''
 52     def __init__(self, x = 0, y = 0, radius = 1):
 53         '''构造圆形对象,圆心坐标(x,y), 半径r'''
 54         self._x = x
 55         self._y = y
 56         self._r = radius
 57 
 58     def info(self):
 59         print(f'圆心: ({self._x}, {self._y})')
 60         print(f'半径: {self._r}')
 61 
 62     def area(self):
 63         return 3.14 * self._r * self._r
 64 
 65     def perimeter(self):
 66         return 2 * 3.14 * self._r
 67 
 68 class Triangle(Shape):
 69     '''
 70     三角形类,继承自Shape
 71     属性:三边边长
 72     方法:打印三角形信息,计算周长、面积
 73     '''
 74     def __init__(self, a = 1, b = 1, c = 1):
 75         self._a, self._b, self._c = a, b, c
 76 
 77     def info(self):
 78         print(f'三角形三边长: ({self._a}, {self._b}, {self._c})')
 79 
 80     def area(self):
 81         s = (self._a + self._b + self._c) / 2
 82         ans = (s*(s - self._a)*(s - self._b)*(s - self._c)) ** 0.5
 83         return ans
 84 
 85     def perimeter(self):
 86         return (self._a + self._b + self._c)
 87 
 88 # 测试类
 89 def main():
 90     print('测试1:'.center(40, '*'))
 91     shapes_lst1 = [Circle(), Rect(), Triangle()]
 92     for t in shapes_lst1:
 93         t.info()
 94         print(f'面积: {t.area():.2f}')
 95         print(f'周长: {t.perimeter():.2f}')
 96         print()
 97 
 98     print('测试2:'.center(40, '*'))
 99 
100     shapes_lst2 = [Circle(x=2, y=2, radius=10),
101                    Rect(x=50, y=50, length=10, width=5),
102                    Triangle(a=3, b=4, c=5)]
103     for t in shapes_lst2:
104         t.info()
105         print(f'面积: {t.area():.2f}')
106         print(f'周长: {t.perimeter():.2f}')
107         print()
108         
109 if __name__ == '__main__':
110     main()

运行测试截图:

 task2.py

程序源码:

1 from shape import Rect, Circle
2 
3 shape_lst = [Rect(5, 5, 10, 5), Circle(), Circle(1, 1, 10)]
4 
5 for i in shape_lst:
6     i.info()
7     print(f'面积: {i.area(): .2f}')
8     print(f'周长: {i.perimeter(): .2f}')
9     print()

运行测试截图:

 实验任务3

task3.py

程序源码:

 1 import math
 2 def func(x):
 3     a=1/(math.sqrt(2*math.pi)*2)
 4     b=-0.5*((x/2)**2)
 5     c=math.exp(b)
 6     return a*c
 7 
 8 print(f'x = 1,f = {func(1):.8f}')
 9 print(f'x = 3,f = {func(3):.8f}')
10 print(f'x = 5,f = {func(5):.8f}')
11 print(f'x = 7,f = {func(7):.8f}')
12 print(f'x = 9,f = {func(9):.8f}')

运行测试截图:

 

标签:__,info,内置,面向对象编程,self,模块,._,print,def
From: https://www.cnblogs.com/cl040302/p/17476066.html

相关文章

  • Python基础之os模块
    OS模块os.makedirs('dirname1/dirname2')可生成多层递归目录os.removedirs('dirname1')若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推os.mkdir('dirname')生成单级目录;相当于shell中mkdirdirnameos.rmdir('dirname')删除单级空目录,若目录不为......
  • python基础day23 os模块和序列化模块
    os模块(重要,多)os模块是与操作系统交互的一个接口('a/aa/aaa/aaaa/aaaaa')#递归创建文件夹os.removedirs('a/aa/aaa')#上推删除空文件夹os.mkdir('aaa')#当前文件所在位置创建一个新的文件夹或文件os.mkdir('a.txt')os.rmdir('aaa')#删除当前文件所在位置平级......
  • Apikit SaaS 10.9.0 版本更新:空间主页上线,应用模块合并!
    Hi,大家好!EolinkApikitSaaS更新10.9.0版本,本次版本更新主要是对多个应用级资源合并,并基于此简化付费套餐和降低费率。本次应用合并是为了接下来更好的发挥EolinkApikit的优势,提供API全生命周期解决方案,为下半年的重大功能更新做前期准备。本次更新的详细内容如下。1、重大......
  • os模块、序列化模块、pickle和json的区别
    os模块#os模块是与操作系统交互的一个接口1.文件相关的os.makedirs('dirname1/dirname2')#可生成多层递归目录os.removedirs('dirname1')#若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推os.mkdir('dirname')#生成单级目录;相当于shell中mkd......
  • SpringBoot多模块项目搭建以及搭建基础模板
    多模块项目搭建目录多模块项目搭建1.父项目pom文件编辑2.创建子模块1.父项目pom文件编辑<!--1.父工程添加pom格式--><packaging>pom</packaging><!--定义子模块--><modules><module>walker-service</module><module>walker-utils&......
  • python 序列化模块
    一、jsonJson模块提供了四个功能:dumps、dump、loads、load1、前景什么叫序列化——将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。序列化的目的以某种存储形式使自定义对象持久化;将对象从一个地方传递到另一个地方。使程序更具维护性2、loads和dumps......
  • DC-DC电源稳压模块直流隔离高压输出升压变换器5v12v24v转50v110v80v250v310v400v500v
    HRB系列隔离宽电压输入高电压稳压输出特点 效率高达80%以上 1*1英寸标准封装 单电压输出 稳压输出 工作温度:-40℃~+85℃ 阻燃封装,满足UL94-V0要求 温度特性好 可直接焊在PCB上应用HRB0.2~10W系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为:4.5~9V、9......
  • 5分钟搞定企业财务中心模块
    编辑导语:作为一名B端产品人,在设计业务系统中,难免要和财务打交道,而最大的门槛便是财务领域的模块设计了。本文作者从基本的原理,系统地介绍了如何设计企业中核心的财务模型,一起来看一下吧。 011分钟搞懂企业财务基本原理要想成为一名合格的B端产品人,在设计业务系统中,很难避免要和财......
  • TypeScript进阶--模块化(跟着ChartGpt学习)
    以下都是我的ChartGpt老师教学的内容哦,(若想知道怎么用ChartGpt学习,或者想知道我的问答方式,可以点这个查看我的学习记录)一:模块化的概念和优点在JavaScript中,我们通常使用全局变量和函数来组织我们的代码,这样容易导致命名冲突、代码复杂、可维护性差等问题。而模块化则是一种更好......
  • BOSHIDA电源模块 电磁噪声的处理 辐射
    BOSHIDA电源模块电磁噪声的处理辐射我们开启关于辐射干扰的讨论,首先要强调,虽然对噪声进行了分类处理,但它们并不是完全没有关联。在电子系统中,尤其是开关电源中,EMI能量可以在传导和辐射形式之间来回转换,甚至可以多次转换,这也会出现在生成和测量过程间。如果噪声能量在导线或PCB走......