实验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()
运行测试截图

 

posted @ 2023-06-09 00:41  林序秋-  阅读(35)  评论(0)    收藏  举报