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

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

时间:2023-06-12 21:33:25浏览次数:42  
标签:__ 内置 return 面向对象编程 self 模块 ._ print def

task1

实验源码:

 1 #1
 2 class Account:
 3     def __init__(self,name,account_number,initial_amount=10):
 4         self._name=name
 5         self._card_no=account_number
 6         self._balance=initial_amount
 7 
 8     def deposit(self,amount):
 9         '''存款'''
10         self._balance+=amount
11 
12     def withdraw(self,amount):
13         '''取款'''
14         if self._balance<amount:
15             print('余额不足')
16             return
17         self._balance-=amount
18 
19     def info(self):
20         '''打印账户信息'''
21         print('持卡人姓名:',self._name)
22         print('持卡人账号:',self._card_no)
23         print('持卡人账户余额:',self._balance)
24 
25     def get_balance(self):
26         '''返回账户余额'''
27         return self._balance
28 
29 def main():
30     print('测试账户1:'.center(30,'*'))
31     a1=Account('Bob','5002311',20000)
32     a1.deposit(5000)
33     a1.withdraw(4000)
34     a1.info()
35 
36     print()
37 
38     print('测试账户2:'.center(30,'*'))
39     a1=Account('Joe','5006692',20000)
40     a1.deposit(10000)
41     a1.withdraw(5000)
42     a1.info()
43 
44 if __name__=='__main__':
45     main()

实验结果:

 task2

实验源码:

#2
class Shape:
    def info(self):
        pass

    def area(self):
        pass

    def perimeter(self):
        pass

class Rect(Shape):
    def __init__(self,x=0,y=0,length=2,width=1):
        self._x=x
        self._y=y
        self._width=width
        self._length=length

    def info(self):
        print(f'矩形左上角顶点坐标:({self._x},{self._y})')
        print(f'矩形长:{self._length}')
        print(f'矩形宽:{self._width}')

    def area(self):
        return self._length * self._width

    def perimeter(self):
        return(self._length+self._width)*2

class Circle(Shape):
    def __init__(self,x=0,y=0,radius=1):
        self._x=x
        self._y=y
        self._r=radius

    def info(self):
        print(f'圆心:({self._x},{self._y})')
        print(f'半径:{self._r}')

    def area(self):
        return 3.14*self._r*self._r

    def perimeter(self):
        return 3.14*2*self._r

class Triangle(Shape):
    def __init__(self,a=1,b=1,c=1):
        self._a,self._b,self._c=a,b,c

    def info(self):
        print(f'三角形三边长:({self._a},{self._b},{self._c})')

    def area(self):
        s=(self._a+self._b+self._c)/2
        ans=(s*(s-self._a)*(s-self._b)*(s-self._c))**0.5

        return ans

    def perimeter(self):
        return(self._a+self._b+self._c)

def main():
    print('测试1:'.center(40,'*'))
    shapes_lst1=[Circle(),Rect(),Triangle()]
    for t in shapes_lst1:
        t.info()
        print(f'面积:{t.area():.2f}')
        print(f'周长:{t.perimeter():.2f}')
        print()

    print('测试2:'.center(40,'*'))
    shapes_lst2=[Circle(x=2,y=2,radius=10),
                 Rect(x=50,y=50,length=10,width=5),
                 Triangle(a=3,b=4,c=5)]
    for t in shapes_lst2:
        t.info()
        print(f'面积:{t.area():.2f}')
        print(f'周长:{t.perimeter():.2f}')
        print()

if __name__=='__main__':
    main()

实验结果:

 task3

实验源码:

#3
from math import *
def func(x):
    m=0
    s=2
    return (1/(2*pi)**0.5/s)*exp(-0.5*((x-m)/s)**2)

for i in range(1,10,2):
    print(f'x={i},y={func(i):.8f}')

实验结果:

 task4

实验源码:

#4.1
from random import choice
class RandomWalk():
    def __init__(self,num_points=5000):
        self.num_points=num_points
        self.x_values=[0]
        self.y_values=[0]

    def fill_walk(self):
        while len(self.x_values)<self.num_points:
            x_direction=choice([1,-1])
            x_distance=choice([0,1,2,3,4])
            x_step=x_direction*x_distance

            y_direction=choice([1,-1])
            y_distance=choice([0,1,2,3,4])
            y_step=y_direction*y_distance

            if x_step==0 and y_step==0:
                continue

            next_x=self.x_values[-1]+x_step
            next_y=self.y_values[-1]+y_step

            self.x_values.append(next_x)
            self.y_values.append(next_y)

def main():
    rw=RandomWalk(5)
    rw.fill_walk()
    print(rw.x_values)
    print(rw.y_values)

if __name__=='__main__':
    main()

实验结果:

 

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

相关文章

  • 实验7 面向对象编程与内置模块
    实验任务1task1.py程序源码:1'''2银行账户3数据:持卡人姓名、账号、当前余额4操作:取款、存款、打印账户信息、返回账户余额5'''67classAccount:8'''一个模拟银行账户的简单类'''9def__init__(self,name,account_number,initial_a......
  • 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中,我们通常使用全局变量和函数来组织我们的代码,这样容易导致命名冲突、代码复杂、可维护性差等问题。而模块化则是一种更好......