首页 > 其他分享 >4.12

4.12

时间:2024-06-19 17:56:26浏览次数:14  
标签:__ 4.12 area self height radius def

时长:三个小时

8-2 【Python0015】以圆类为基础设计三维图形体系 分数 10 作者 doublebest 单位 石家庄铁道大学

【题目描述】设计三维图形类体系,要求如下:

设计三维图形功能接口,接口包含周长、面积、体积计算方法;

基于以上接口,首先定义点类,应包含x,y坐标数据成员,坐标获取及设置方法、显示方法等;

以点类为基类派生圆类,增加表示半径的数据成员,半径获取及设置方法,重载显示函数,并可计算周长和面积等;

以圆类为基础派生球类、圆柱类、圆锥类;要求派生类球、圆柱、圆锥中都含有输入和输出显示方法;并可计算面积、周长。

程序中定义各种类的对象,并完成测试。
【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。

问题:

代码量:

from abc import ABC, abstractmethod

class ThreeDShapeInterface(ABC):
@abstractmethod
def perimeter(self):
pass

@abstractmethod
def area(self):
pass

@abstractmethod
def volume(self):
pass

class Point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y

def get_coordinates(self):
return self.x, self.y

def set_coordinates(self, x, y):
self.x = x
self.y = y

def display(self):
print(f"坐标: ({self.x}, {self.y})")

import math

def base_area(radius):
"""
计算圆的面积

参数:
radius: 圆的半径

返回:
圆的面积
"""
area = math.pi * (radius ** 2)
return area


class Circle(Point, ThreeDShapeInterface):
def __init__(self, x=0, y=0, radius=1):
super().__init__(x, y)
self.radius = radius

def get_radius(self):
return self.radius

def set_radius(self, radius):
self.radius = radius

def display(self):
super().display()
print(f"半径: {self.radius}")

def perimeter(self):
return 2 * math.pi * self.radius

def area(self):
return math.pi * self.radius ** 2

# 圆作为二维图形,没有体积
def volume(self):
raise NotImplementedError("ERROR")

class Sphere(Circle):
def __init__(self, x=0, y=0, radius=1):
super().__init__(x, y, radius)

def volume(self):
return 4/3 * math.pi * self.radius ** 3

class Cylinder(Circle):
def __init__(self, x=0, y=0, radius=1, height=1):
super().__init__(x, y, radius)
self.height = height

def get_height(self):
return self.height

def set_height(self, height):
self.height = height

def display(self):
super().display()
print(f"高: {self.height}")

def area(self):
base_area = super().area()
side_area = 2 * math.pi * self.radius * self.height
return 2 * base_area + side_area

def volume(self):
return base_area * self.height

class Cone(Circle):
def __init__(self, x=0, y=0, radius=1, height=1):
super().__init__(x, y, radius)
self.height = height

def get_height(self):
return self.height

def set_height(self, height):
self.height = height

def display(self):
super().display()
print(f"高: {self.height}")

def area(self):
base_area = super().area()
slant_height = math.sqrt(self.radius**2 + self.height**2)
side_area = math.pi * self.radius * slant_height
return base_area + side_area

def volume(self):
return 1/3 * base_area * self.height

point = Point(3, 4)
point.display()

circle = Circle(0, 0, 5)
circle.display()
print(f"周长: {circle.perimeter()}, 面积: {circle.area()}")

sphere = Sphere(1, 2, 3)
sphere.display()
print(f"体积: {sphere.volume()}")

cylinder = Cylinder(0, 0, 4, 6)
cylinder.display()
print(f"面积: {cylinder.area()}, 体积: {cylinder.volume()}")

cone = Cone(0, 0, 4, 6)
cone.display()
print(f"面积: {cone.area()}, 体积: {cone.volume()}")

标签:__,4.12,area,self,height,radius,def
From: https://www.cnblogs.com/szm123/p/18256901

相关文章

  • 4.12 Python set集合基本操作
    Pythonset集合基本操作(添加、删除、交集、并集、差集)Pythonset集合最常用的操作是向集合中添加、删除元素,以及集合之间做交集、并集、差集等运算,本节将一一讲解这些操作的具体实现。向set集合中添加元素set集合中添加元素,可以使用set类型提供的add()方法实现,该......
  • 4.12
    今日完成的主要内容是有关于数据库的实验四的内容数据库的备份与恢复实验在用Windows身份验证进入SSMS后找到服务器对象,右键点击备份设备点击新建备份设备来新建一个备份设备 然后再右键点击新建的备份设备,点击备份数据库 在数据库中找到students数据库 在介质选项中的......
  • HydroOJ 从入门到入土(19)导入题解和标程、题目数据统计(>=4.12.0)
    题解和std可以导入了,导出还会远吗?目录一、导入题解和标程1.目录结构2.测试结果3.第二次测试题目结构如下:测试结果:4.总结:关于题解:关于标程(std):去除.DS_Store的解决方法二、题目数据统计1.范围2.筛选选项3.无关紧要的小bug一、导入题解和标程新版本更新了这个功能,方......
  • 4.12
    packagecom.southwind.test;importjava.sql.*;publicclasstest{publicstaticvoidmain(String[]args){//加载驱动,获取他的运行实类,然后用trycatch处理异常try{Class.forName("com.mysql.cj.jdbc.Driver");//获取链接3......
  • Socket.D v2.4.12 发布(新增 python 实现)
    Socket.D协议?Socket.D是一个网络应用协议。在微服务、移动应用、物联网等场景,可替代http、websocket等。协议详情参考《官网介绍》。支持:tcp,udp,ws,kcp传输。目前:java,kotlin,javascript,node.js,python语言环境可用。go,rust,c/c++,.net正在开发中。forJava更新......
  • 2024.4.12
    2024.4.12【“相遇总是猝不及防、爱意总是野蛮生长”】Sunday三月初四<theme=oi-"search">P1092NOIP2004提高组虫食算//2024.4.12//bywhite_ice#include<bits/stdc++.h>usingnamespacestd;#defineitnintconstintoo=30;chars1[oo],s2[oo],s3[oo];i......
  • 4.12
    whk又考试了,数学癫疯85。出题人是著名的同时也是我们班的数学老师,上次出题有点水,结果这次放了个大直接给我干爆了......
  • 闲话 4.12——对 Worpitzky 恒等式的几个证明
    \[\sum_{i}\left\langle\begin{matrix}n\\i\end{matrix}\right\rangle\binom{i+k}{n}=k^n\]通俗的证明(具体数学的习题6.15)是使用归纳法。我们也可以对后面几个式子用二项式反演证明,而有如下过程:\[\begin{aligned}z^n&=\sum_{i=0}^n{n\bracei}z^\underlinei\\&=\sum_{i=0}......
  • 2024.4.6 - 4.12
    SatJOI2023Final宣传2\(n\)个人,每个人有住所位置\(X_i\)与影响力\(E_i\),一个人\(i\)拿到书后会号召另一个人\(j\)买书仅当\(|X-i-X_j|\leqE_i-E_j\),你最少送多少个人书才能使得所有人都会有书(送的或者被号召买书)。\(n\leq5\times10^5\)。拆一下绝对值,得:\[......
  • 关于Linux内核4.12之前版本中, tcp_tw_recycle开启后NAT环境总是出问题的分析
     问题出现的场景很简单,nat网关下,有几台服务器,需要访问企业内部的某个的API服务器,API服务器上rcycle设置为1(4.12内核版本之前有这个设置,之后这个属性取消了,理论上也不会出现这种问题了),就在NAT下客户端并发量比较大的情况下,出现连接不上的情况(应该是SYN后,没有收到SYNACK,连接被丢......