利用 Python 尝试采用面向对象的设计方法计算图形面积及周长
利用 Python 尝试采用面向对象的设计方法。
(1)设计一个基类 Shape:
包含两个成员函数:
def cal_area(): 计算并返回该图形的面积,保留两位小数;
def cal_perimeter(): 计算并返回该图形的周长,保留两位小数。
def display(): 三行字符串,分别显示名称、面积、周长,数值四舍五入保留两
位小数,如下:
名称是 rect
面积是 6
周长是 10
包含三个变量:
name:表示名称,字符串类型;
area:表示面积,数字;
perimeter:表示周长,数字。
(2)设计三个派生类: Rectangle、 Triangle、 Circle;派生类分别实现基类中的两个成
员函数。
Rectangle:构造函数参数(n, a, b), n 为名称,其他均为浮点数,两位小数, a、 b 分
别代表长和宽。
Triangle:构造函数参数(n, a, b, c), n 为名称,其他均为浮点数,两位小数,代表三
边的长度。
Circle:构造函数参数(n, a), n 为名称, a 为浮点数,两位小数,代表圆的半径,圆
周率取 3.14 进行计算。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#题目8:计算图形面积及周长
import math
class Shape:
def __init__(self,name,area,perimeter):
self.name = name
self.area = area
self.perimeter = perimeter
def cal_area(self):
pass
def cal_perimeter(self):
pass
def display(self):
print('名称:',self.name)
print('面积:',self.area)
print('周长:',self.perimeter)
class Rectangle(Shape):
def __init__(self,n,a,b):
self.n = n
self.a=a
self.b=b
def cal_area(self):
area = round (self.a * self.b, 2)
def cal_perimeter(self,):
perimeter=round(2*(self.a+self.b),2)
class Triangle(Shape):
def __init__(self,n,a,b,c):
self.n=n
self.a=a
self.b=b
self.c=c
def cal_area(self):
p=(self.a+self.b+self.c)/2
area=round(math.sqrt(p*(p-self.a)*(p-self.b)*(p-self.c)),2)
return area
def cal_perimeter(self):
perimeter=self.a+self.b+self.c
return perimeter
class Circle(Shape):
def __init__(self,n,a):
self.n = n
self.a=a
def cal_perimeter(self):
perimeter=round(2*3.14*self.a,2)
return perimeter
def cal_area(self):
area=round(3.14*self.a**2,2)
return area
可直接联系客服QQ交代需求:953586085
欢迎点击链接加入群聊【程序代写-接单群】共同致富:https://jq.qq.com/?_wv=1027&k=5WxihsL
群号:733065427
if __name__ == '__main__':
cir=Circle('cir',3)
result=Shape(cir.n,cir.cal_area(),cir.cal_perimeter())
result.display()
ret=Rectangle('ret',4,5)
result=Shape(ret.n,ret.cal_area(),ret.cal_perimeter())
result.display()
tri=Triangle('tri',2,4,5)
result=Shape(tri.n,tri.cal_area(),tri.cal_perimeter())
result.display()
利用 Python 尝试采用面向对象的设计方法计算图形面积及周长的更多相关文章
- 利用python批量修改word文件名的方法示例
利用python批量修改word文件名的方法示例 最近不小心把硬盘给格式化了,由于当时的文件没有备份,所以一下所有的文件都没有了,于是只能采取补救措施,用文件恢复软件恢复了一部分的数据出来,但是恢复完 ...
- 利用C++中采用面向对象的思想顺序表
最近在复习数据结构,我用面向对象的思想实现了顺序表,采用C++语言. 首先建立在Visual Studio 2017中建立一个工程,然后新建一个类SqList.然后会生成SqList.h和SqList ...
- 利用Python进行数据分析(6) NumPy基础: 矢量计算
矢量化指的是用数组表达式代替循环来操作数组里的每个元素. NumPy提供的通用函数(既ufunc函数)是一种对ndarray中的数据进行元素级别运算的函数. 例如,square函数计算各元素的平方,r ...
- 利用python实现电影推荐
"协同过滤"是推荐系统中的常用技术,按照分析维度的不同可实现"基于用户"和"基于产品"的推荐. 以下是利用python实现电影推荐的具体方法 ...
- 转利用python实现电影推荐
“协同过滤”是推荐系统中的常用技术,按照分析维度的不同可实现“基于用户”和“基于产品”的推荐. 以下是利用python实现电影推荐的具体方法,其中数据集源于<集体编程智慧>一书,后续的编程 ...
- 利用python进行数据分析PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:hi2j 内容简介 [名人推荐] "科学计算和数据分析社区已经等待这本书很多年了:大量具体的实践建议,以及大量综合应用方法.本书在未来几年里肯定会成为Python领域中技术计 ...
- 面向对象相关概念与在python中的面向对象知识(魔法方法+反射+元类+鸭子类型)
面向对象知识 封装 封装的原理是,其成员变量代表对象的属性,方法代表这个对象的动作真正的封装是,经过深入的思考,做出良好的抽象(设计属性时用到),给出“完整且最小”的接口,并使得内部细节可以对外透明( ...
- python 面向对象、特殊方法与多范式、对象的属性及与其他语言的差异
1.python 面向对象 文章内容摘自:http://www.cnblogs.com/vamei/archive/2012/06/02/2532018.html 1.__init__() 创建对 ...
- [python 译] 基于面向对象的分析和设计
[python 译] 基于面向对象的分析和设计 // */ // ]]> [python 译] 基于面向对象的分析和设计 Table of Contents 1 原文地址 2 引言 2.1 ...
随机推荐
- Fiddler抓取https原理
首先fiddler截获客户端浏览器发送给服务器的https请求, 此时还未建立握手.第一步, fiddler向服务器发送请求进行握手, 获取到服务器的CA证书, 用根证书公钥进行解密, 验证服务器数据 ...
- C# 字符串按设置的格试在前面或后面增加空格或其它字符
public string lengadd(string stringa, string stringb, int count, int mode) //以stringa的长度,未到count的长度则 ...
- 如果只有1小时学Python,看这篇就够了
大家好,我是大鹏,城市数据团联合发起人,致力于Python数据分析.数据可视化的应用与教学. 和很多同学接触过程中,我发现自学Python数据分析的一个难点是资料繁多,过于复杂.大部分网上的资料总是从 ...
- ios获取数组中的最大值
在编码过程中,我们通常碰到一组数据,需要自己简单的处理下,拿到数组中的总和,大小和平均值数据. 1.简单粗暴的方法,快速求和. NSArray * array = @[@"35", ...
- Spring之IOC原理及代码详解
一.什么是IOC 引用 Spring 官方原文:This chapter covers the Spring Framework implementation of the Inversion of ...
- mysql limit和offset用法
limit和offset用法 mysql里分页一般用limit来实现 1. select* from article LIMIT 1,3 2.select * from article LIMIT 3 ...
- 巧用XML格式数据传入存储过程转成表数据格式
1.首先将后台数据转成对应的XML数据格式 /// <summary> /// 集合转XML数据格式 /// </summary> /// <param name=&qu ...
- 《Python编程:从入门到实践》第三章 列表简介 习题答案
#3.1 names=['lpr','tjl','gnl','by','dqy']; print(names[0]); print(names[1]); print(names[2]); print( ...
- JVM学习总结
JVM指令执行流程架构图:
- 6. kafka序列化和反序列化
https://blog.csdn.net/weixin_33690963/article/details/91698279 kafka序列化: 生产者在将消息传入kafka之前需要将其序列化成byt ...