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

实验结论
1、对象的本质是一种数据的组织方式、是具体的事物;而类则是对对象的抽象,可以看成是一类对象的模板,其中定义了一类对象所应该具有的共同属性与共同方法。
属性用于定义一个类或其中的对象的静态特征;方法则是用于定义一个类或一类实例的行为特征和功能实现。
实例化指的是将“设计方案”转化为对象的一个过程。
2、类的封装性,体现在它把众多程序细节隐藏起来,仅向用户提供一小部分接口用于运行。
实验任务2
#task2
源码
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()
运行测试截图

实验结论
1、继承,即一个类继承另一个类的所有属性和方法,同时还可以自己拥有另一个类不具备的方法和属性。
多态建立在继承的基础——因为一个父类对象可以产生多个不同的子类对象,而且根据这些子类对象的不同可以各自具备不同的方法,不同的形态(即多态)得以产生。
2、模块其实就是python程序,其中可包含若干个函数。由函数构成模块,再由模块拼成一整个代码。
实验任务3
#task3
源码
1 import math
2 def func(x):
3 f = ((math.e)**((-0.5)*(((x - m)/s)**2)))/(s*math.sqrt(2*(math.pi)))
4 return f'{f:.8f}'
5
6 m = 0
7 s = 2
8 x_lst = [1, 3, 5, 7, 9]
9 for x in x_lst:
10 print(f'x = {x}, f = {func(x)}')
运行测试截图

实验任务4
#task4
源码
1 '''
2 模拟多次随机漫步
3 '''
4
5 from matplotlib import pyplot as plt
6 from random_walk import RandomWalk
7 from time import sleep
8
9 #代码范例中,模拟两次随机漫步过程
10 n = 0
11 while n < 2:
12 n += 1
13
14 #创建一个RandomWalk对象,调用其方法生成随机游走坐标
15 rw = RandomWalk(50000)
16 rw.fill_walk()
17
18 #用散点图进行可视化绘制
19 plt.figure(figsize= (10,6), dpi = 128)
20 point_numbers = list(range(rw.num_points))
21 plt.scatter(rw.x_values, rw.y_values, c = point_numbers, cmap = plt.cm.Blues, edgecolor = 'None', s = 1)
22
23 #终点和起点
24 plt.scatter(0, 0, c = 'grey', edgecolors = 'none', s = 100)
25
26 #隐藏坐标轴
27 plt.axis('off')
28
29 plt.show()
运行测试截图


浙公网安备 33010602011771号