首页 > 其他分享 >软工日报4.13

软工日报4.13

时间:2024-06-19 22:37:22浏览次数:10  
标签:__ 4.13 area 日报 软工 height radius self 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.13,area,日报,软工,height,radius,self,def
From: https://www.cnblogs.com/guozi6/p/18257636

相关文章

  • 软工日报4.16
    问题:8-5【Python0018】设计并实现平面点类Point分数10全屏浏览作者 doublebest单位 石家庄铁道大学【题目描述】定义一个平面点类Point,对其重载运算符关系运算符,关系运算以距离坐标原点的远近作为基准,远的为大。程序完成对其的测试。【练习要求】......
  • 软工日报4.17
    今日,我主要负责实现应用中的登录注册功能。然而,在开始编码之前,我发现了一个关键的问题——数据库中的用户表尚未建立。因此,我首先决定先创建这个用户表,以支持后续的登录注册操作。在创建用户表时,我考虑了用户所需的基本信息,如用户名、密码(通常我们会存储密码的哈希值而非明文密......
  • 软工日报3.26
    代码量:8-4【Python0036】中文级联菜单分数10全屏浏览作者 doublebest单位 石家庄铁道大学编写程序实现中文级联菜单,建议可以使用pypinyin或其它扩展库。代码:defdisplay_menu(menu,level=0):"""递归显示菜单"""forindex,(key,v......
  • 软工日报3.25
    代码量:8-3【Python0035】英文统计分数10全屏浏览作者 doublebest单位 石家庄铁道大学编写程序实现对特定英文文章(文本文件)的单词数和有效行数的统计,其中要求空行不计数;代码:importrefile="HarryPotterAndTheChamberOfSecrets.txt......
  • 软工日报3.22
    代码量:8-2【Python0032】谢宾斯基三角型字符分形图形输出分数10全屏浏览作者 doublebest单位 石家庄铁道大学要求编程输出如下图示的字符分形图形(谢宾斯基三角形),要求提交源代码文件,其中源代码要求逐行注释。 代码:importturtle......
  • 软工日报3.21
    代码量:8-1【Python0031】简易带参计算器分数10全屏浏览作者 doublebest单位 石家庄铁道大学设计一个简易的参数计算器。【输入格式】第一行输入待计算的带变量参数的计算式第二行输入各变量参数的赋值序列【输出格式】输出带变量参数的计算式的计......
  • 软工日报3.13
    代码量:7-1产生每位数字相同的n位数分数15全屏浏览切换布局作者 陈春晖单位 浙江大学读入2个正整数A和B,1<=A<=9,1<=B<=10,产生数字AA...A,一共B个A输入格式:在一行中输入A和B。输出格式:在一行中输出整数AA...A,一共B个A输入样例1:在这......
  • 软工日报3.20
    代码量:6-1使用函数输出指定范围内Fibonacci数的个数分数20全屏浏览切换布局作者 陈春晖单位 浙江大学本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m<n≤100000)之间的所有Fibonacci数的数目。所谓Fib......
  • 软工日报3.19
    代码量:6-1使用函数求特殊a串数列和分数30全屏浏览切换布局作者 陈春晖单位 浙江大学给定两个均不超过9的正整数a和n,要求编写函数fn(a,n)求a+aa+aaa++⋯+aa⋯aa(n个a)之和,fn须返回的是数列和函数接口定义: fn(a,n)其中a和n都是用户传......
  • 软工日报3.18
    代码量:7-1jmu-python-汇率兑换分数10全屏浏览切换布局作者 蔡莉白单位 集美大学按照1美元=6人民币的汇率编写一个美元和人民币的双向兑换程序输入格式:输入人民币或美元的金额,人民币格式如:R100,美元格式如:$100输出格式:输出经过汇率计算的......