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

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

时间:2023-06-06 23:11:24浏览次数:38  
标签:__ info 内置 面向对象编程 self 模块 ._ print def

task1.py

code:

class Account:
    def __init__(self,name,account_number,initial_amount = 10):
        self._name = name
        self._card_no = account_number
        self._balance = initial_amount
    def deposit(self,amount):
        self._balance += amount
    def withdraw(self,amount):
        if self._balance < amount:
            print('余额不足')
            return

        self._balance -= amount
    def info(self):
        print('持卡人姓名:',self._name)
        print('持卡人账号:',self._card_no)
        print('持卡人账户余额:',self._balance)
    
def main():
    print('测试账户1:'.center(30,'*'))
    a1 = Account('Bob','5006692',20000)
    a1.deposit(5000)
    a1.withdraw(4000)
    a1.info()

    print()

    print('测试账户2:'.center(30,'*'))
    a2 = Account('Joe','5006692',20000)
    a2.withdraw(10000)
    a2.withdraw(5000)
    a2.info()

if __name__ == '__main__':
    main()

output:

Understanding and Experiencing:

Account类共有 name、account_number和initial_amount这三个属性。其中我们所调用的是deposit和withdraw函数,其功能是在initial_amount中扣除或增加Balance。且程序还具有判断余额是否足够的功能。在编写代码def的时候没有注意main()的缩进导致无法调用main函数,因此在写代码时应要时刻注意缩进,利用tab键进行调试。

shape.py

code:

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._width+self._length)*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 2 * 3.14 * 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()

output:

task2.py

code:

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

output:

Understanding and Experiencing:

在编写该代码时,学生遇到了以下报错:TypeError: Rect() takes no arguments,在不断的调整重复中程序始终报错,并随着修改报错类型也在不断变化。最终学生发现错误的来源为line9中

    def __init__(self, x=0 , y=0 ,length = 2,width = 1):
被写成了:
    def __int__(self, x=0 , y=0 ,length = 2,width = 1):
仅一个小小字符之差,给我带来了半个小时的困扰和迷惑!绝不是代码过于矫情,本身在pycharm的环境下纠错分类已经足够简单,更别提更加复杂的环境!事无巨细。

task3.py

code:

from math import *
k = 1
for i in range(5):
    for (m, s, x) in [(0, 2, k)]:
        fx = (1 / (sqrt(2 * pi )*s)) * exp((-1 / 2) * ((x - m) / s) ** 2)
        print(f'x = {k}',',',f'f={"%.8f" %fx}')
    k += 2

output:

 

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

相关文章

  • python-日记模块模板
    1"""2logging配置3"""45#定义三种日志输出格式开始6standard_format='[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]'\7'[%(levelname)s][%(message)s]......
  • linux下awk内置函数的使用(split/substr/length)
    一、split初始化和类型强制awk的内建函数split允许你把一个字符串分隔为单词并存储在数组中。你可以自己定义域分隔符或者使用现在FS(域分隔符)的值。格式:split(string,array,fieldseparator)split(string,array)-->如果第三个参数没有提供,awk就默认使用当前FS值。例子:......
  • 模块
    简介模块就是一系列的整合,使用时直接调用即可,模块可以提高效率 1.来源1.内置的(python解释器自带的,可以直接使用)2.第三方的(别人写好直接放网上,想要下载才可以使用)3.自定义的(自己写的) 2.存在模式一共有四种模式,目前只用2种1.我们自己写的单个py文件(一个py文件就是一个模......
  • 【python】threading模块之Semaphore
     threading模块之Semaphoreimportthreadingimporttimeimportrandom#Theoptionalargumentgivestheinitialvaluefortheinternalcounter;#itdefaultsto1.#Ifthevaluegivenislessthan0,ValueErrorisraised.semaphore=threading.Semaphore(0)......
  • ASEMI代理英飞凌智能功率模块IKCM10H60GA
    编辑-ZIKCM10H60GA参数描述:型号:IKCM10H60GA最大闭锁电压VCES:600VP-N的直流链路电源电压VPN:450V输出电流IC:10A最大峰值输出电流:16A短路耐受时间tSC:5µs每个IGBT的功耗Ptot:23.1W工作接点温度范围TJ:-40~150℃模块电源电压VDD:20V输入电压VIN:10V开关频率fPWM:20kHz开启上......
  • 3500/42M 140734-02本特利监测模块应用于石油等
    3500/42M140734-02本特利监测模块应用于石油等 什么是紧急停机系统(ESD)?EmergencyShutdown是由于供电设施故障或工厂重要部件故障(如泵进料故障、反应物供应故障或熔炉故障等)而导致的紧急停机。紧急停机系统是一种停止过程操作并隔离输入连接或电流以快速降低意外事件发......
  • Webpack5 联邦模块
    模块联邦在大型项目中,往往会把项目中的某个区域或功能模块作为单独的项目开发,最终形成「微前端」架构在微前端架构中,不同的工程可能出现下面的场景这涉及到很多非常棘手的问题:如何避免公共模块重复打包如何将某个项目中一部分模块分享出去,同时还要避免重复打包如何管理依赖的不同版......
  • 如何在Python中使用JSON模块
    JSON(JavaScriptObjectNotation)是一种流行的轻量级数据交换标准。它表示由键值对组成的数据结构,非常简单易懂。JSON已成为在线服务之间数据交换的行业标准。它广泛用于现代编程语言,包括Python。JSON数据经常表示为嵌套字典、列表和标量值,例如文本、数字、布尔值和空值。之所......
  • 28) 跳过去 (只装父pom |不测试|构建特定模块)
    只装父pom跳过子命令行mvn-Ninstall-N,--non-recursive          Donotrecurseintosub-projectsusage:mvn[options][<goal(s)>][<phase(s)>]eclipse 跳过测试mvninstall-DskipTests http://maven.apache.org/surefire/maven-su......
  • IKCM10H60GA-ASEMI代理英飞凌功率模块IKCM10H60GA
    编辑:llIKCM10H60GA-ASEMI代理英飞凌功率模块IKCM10H60GA型号:IKCM10H60GA品牌:ASEMI封装:DIP-24正向电流:0.8A反向电压:600V引脚数量:3芯片个数:1芯片尺寸:漏电流:>10ua恢复时间: 浪涌电流:30A包装方式:盘装封装尺寸:如图特性:单向可控硅工作结温:-40℃~125℃......