第7章 类与面向对象

6-1 二维平面上的点操作(Python3)

题目描述

设计一个表示二维平面上点的类 Point。该类应该包含以下功能:

  • 两个私有属性 _x_y,分别表示点的横坐标和纵坐标。

  • 一个构造函数 __init__,用于初始化点的坐标。

  • 一个方法 distance_to_origin,返回该点到原点 (0, 0) 的欧几几何距离。

  • 一个方法 move_by,接受两个参数 dxdy,将点的横坐标和纵坐标分别增加 dxdy

  • 一个特殊方法 __str__,返回点的信息字符串,格式为 "Point(x, y)"

函数接口定义(你实现)

class Point:def __init__(self, x, y):# 初始化点的坐标passdef distance_to_origin(self):# 返回点到原点的距离passdef move_by(self, dx, dy):# 移动点的位置passdef __str__(self):# 返回点的信息字符串pass

裁判测试程序样例

def main():# 用户输入点的初始坐标 (x, y)# 使用 input() 读取一行输入,并用 split() 将其分割成两个字符串# 使用 map(float, ...) 将这两个字符串转换为浮点数x, y = map(float, input("请输入点的初始坐标 (x y): ").split())# 创建 Point 类的实例,传入初始坐标 (x, y)point = Point(x, y)# 调用 point 的 distance_to_origin 方法计算点到原点 (0, 0) 的距离# 使用 f-string 格式化输出,保留两位小数print(f"Distance to origin: {point.distance_to_origin():.2f}")# 用户输入移动量 (dx, dy)# 使用 input() 读取一行输入,并用 split() 将其分割成两个字符串# 使用 map(float, ...) 将这两个字符串转换为浮点数dx, dy = map(float, input("请输入移动量 (dx dy): ").split())# 调用 point 的 move_by 方法,将点的位置按 (dx, dy) 移动point.move_by(dx, dy)# 打印移动后的点的信息# 调用 point 的 __str__ 方法,返回点的字符串表示print(point)#执行 main 函数
if __name__ == "__main__":main()

输入样例

3 4
1 2

输出样例

Distance to origin: 5.00
Point(4.0, 6.0)

实现提示

  • 使用 math.sqrt 来计算欧几里得距离(开根号)。

  • 确保 __str__ 方法返回正确的字符串格式。

 代码

import math  class Point:  def __init__(self, x, y):  # 初始化点的坐标  self._x = x  self._y = y  def distance_to_origin(self):  # 返回点到原点的距离  return math.sqrt(self._x**2 + self._y**2)  def move_by(self, dx, dy):  # 移动点的位置  self._x += dx  self._y += dy  def __str__(self):  # 返回点的信息字符串  return f"Point({self._x}, {self._y})"  

 

 6-2 图形面积计算(Python3)

 

图形编辑器

题目描述

设计一个简单的图形编辑器系统,该系统包括以下类:

  • Shape:所有图形的基类。

  • Circle:表示圆形,继承自 Shape

  • Rectangle:表示矩形,继承自 Shape

  • Triangle:表示三角形,继承自 Shape

每个图形类都需要实现以下方法:

  • area():返回图形的面积。

  • perimeter():返回图形的周长。

此外,**题目已经编写好了主程序和测试函数,学生只需实现上述这些方法即可。

函数接口定义(你实现的部分)

class Shape:def area(self):raise NotImplementedError("This method should be overridden by subclasses")def perimeter(self):raise NotImplementedError("This method should be overridden by subclasses")class Circle(Shape):def __init__(self, radius):self.radius = radiusdef area(self):# 计算并返回圆的面积passdef perimeter(self):# 计算并返回圆的周长passclass Rectangle(Shape):def __init__(self, width, height):self.width = widthself.height = heightdef area(self):# 计算并返回矩形的面积passdef perimeter(self):# 计算并返回矩形的周长passclass Triangle(Shape):def __init__(self, a, b, c):self.a = aself.b = bself.c = cdef area(self):# 计算并返回三角形的面积passdef perimeter(self):# 计算并返回三角形的周长pass

 

裁判测试程序样例(判卷逻辑)

def print_shape_info(shape):# 打印给定形状的面积和周长print(f"Area: {shape.area():.2f}")print(f"Perimeter: {shape.perimeter():.2f}")def main():# 用户输入图形类型和相应的参数shape_type = input("")if shape_type == 'circle':radius = float(input(""))shape = Circle(radius)elif shape_type == 'rectangle':width, height = map(float, input("").split())shape = Rectangle(width, height)elif shape_type == 'triangle':a, b, c = map(float, input("").split())shape = Triangle(a, b, c)else:print("未知的图形类型")return# 打印图形的面积和周长print_shape_info(shape)if __name__ == "__main__":main()

输入样例 1

circle
5

输出样例 1

Area: 78.54
Perimeter: 31.42

输入样例 2

rectangle
4 6

输出样例 2

Area: 24.00
Perimeter: 20.00

输入样例 3

triangle
3 4 5

输出样例 3

Area: 6.00
Perimeter: 12.00

代码 

import math  class Shape:  def area(self):  raise NotImplementedError("This method should be overridden by subclasses")  def perimeter(self):  raise NotImplementedError("This method should be overridden by subclasses")  class Circle(Shape):  def __init__(self, radius):  self.radius = radius  def area(self):  # 计算并返回圆的面积  return math.pi * (self.radius**2)  def perimeter(self):  # 计算并返回圆的周长  return 2 * math.pi * self.radius  class Rectangle(Shape):  def __init__(self, width, height):  self.width = width  self.height = height  def area(self):  # 计算并返回矩形的面积  return self.width * self.height  def perimeter(self):  # 计算并返回矩形的周长  return 2 * (self.width + self.height)  class Triangle(Shape):  def __init__(self, a, b, c):  self.a = a  self.b = b  self.c = c  def area(self):  # 计算并返回三角形的面积(海伦公式)  s = (self.a + self.b + self.c) / 2  return math.sqrt(s * (s - self.a) * (s - self.b) * (s - self.c))  def perimeter(self):  # 计算并返回三角形的周长  return self.a + self.b + self.c  

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36952.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux基础开发工具--gdb的使用

目录 安装准备: 1. 背景 2. 开始使用 3. 做一个Linux第一个小程序-进度条 安装准备: 对于gdb的学习使用,为了方便大家学习,我建议大家先安装一个cgdb进行学习,这样方便观察操作与学习gdb。 用以下…

leetcode热题100道——两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 示例 1…

某公司制造业研发供应链生产数字化蓝图规划P140(140页PPT)(文末有下载方式)

详细资料请看本解读文章的最后内容。 资料解读:某公司制造业研发供应链生产数字化蓝图规划 在当今制造业数字化转型的浪潮中,企业信息化建设成为提升竞争力的关键。本资料围绕 XX 公司的信息化建设展开,涵盖业务战略、信息化路线图、各领域系…

【总结篇】java多线程,新建线程有几种写法,以及每种写法的优劣势

java多线程 新建线程有几种写法,以及每种写法的优劣势 [1/5]java多线程 新建线程有几种写法–继承Thread类以及他的优劣势[2/5]java多线程-新建线程有几种写法–实现Runnable接口以及他的优劣势[3/5]java多线程 新建线程有几种写法–实现Callable接口结合FutureTask使用以及他的…

GB9706.1-2020附件J绝缘路径参考

下图为GB9706.1-2020绝缘路径示例图,附件J。 MOOP:对操作者的防护措施 MOPP:对患者的防护措施 1、保护接地外壳,网电源及次级电路与外壳之间。 网电源-外壳:1MOOP 次级电路-外壳:1MOOP 2、未保护接地外壳&…

基于springboot的教务系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 这些年随着Internet的迅速发展,我们国家和世界都已经进入了互联网大数据时代,计算机网络已经成为了整个社会以及经济发展的巨大动能,各个高校的教务工作成为了学校管理事务的重要目标和任务,因此运用互联网技术来提高教务的…

大模型+知识图谱:赋能知识智能新升级

在大模型(Large Language Model, LLM)飞速发展的今天,如何把传统行业中沉淀多年的大量结构化与非结构化数据真正“用起来”,正成为推动智能化转型的关键一步。 找得到,看得懂,为何很难? 以制造…

Qt6+QML实现Windows屏幕录制

前言 Qt6提供了更丰富的多媒体支持类,使用Qt6 QMediaCaptureSession、QScreenCapture、QMediaRecorder,来实现一个屏幕录制的demo,其中QScreenCapture 最低版本 Qt6.5。支持录制的清晰度设置,选择视频保存位置,UI使用…

Java---SpringMVC(2)

下文使用postman模拟客户端传递信息。 1.postman传参介绍 1.1传递单个参数 1.2传递多个参数 注意事项 使⽤基本类型(int...)来接收参数时, 参数必须传(除boolean类型), 否则会报500错误 类型不匹配时, 会报400错误 对于包装类型, 如果不传对应参数&a…

MySQL为什么默认使用RR隔离级别?

大家好,我是锋哥。今天分享关于【MySQL为什么默认使用RR隔离级别?】面试题。希望对大家有帮助; MySQL为什么默认使用RR隔离级别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MySQL 默认使用 RR (Repeatable Read) …

人工智能之数学基础:线性方程组求解的得力助手——增广矩阵

本文重点 增广矩阵是一个极具实用价值的工具,尤其在处理线性方程组时,它展现了卓越的功效。通过整合系数和常数项,增广矩阵简化了计算过程并提供了判断方程组解集的有效方法。 增广矩阵的起源与定义 增广矩阵的概念源于线性方程组求解的需求。在解决线性方程组时,我们常…

【Axure高保真原型】增删改饼图

今天和大家分享能增删改的饼图的原型模版,该模版是用Axure原生元件制作的,所以不需要联网或者调用外部接口,使用也很方便,默认数据在中继器表格里填写,默认支持20个不同颜色的扇形,后续可根据实际需要自己增…

WordPress系统获取webshell的攻略

一.后台修改模板拿WebShell 1.进入Vulhub靶场并执⾏以下命令开启靶场;在浏览器中访问并安装好 #执⾏命令 cd /vulhub/wordpress/pwnscriptum docker-compose up -d 2. 修改其WP的模板,登陆WP后点击 【外 观】 --》 【编辑】 --》 404.php 3.插入一句话木…

Java反序列化CommonsBeanutils无依赖打Shiro

说明 如果您之前未了解过 Commons Collections(CC)利用链,建议您先阅读相关基础文章,然后再回头阅读此文章。这样可以更好地理解其中的内容 Java反序列化-Commons Collections3利用链分析详解 Java反序列化-Commons Collections…

用curl和python通过网络测试Ollama服务器的配置和状态

当一个Ollama服务器创建好后,除了用ollama指令来测试,还可以使用curl和python来通过网络测试Ollama的配置是否正确,远程是否能正常连上并与服务器进行交互。 目录 启动Ollama服务器 下载模型 curl测试 检查服务器状态 列出已安装的模型…

蓝桥杯青少组stema2025年3月9日scratch初级组真题——转动的图形

完整题目可查看: 转动的图形_scratch_少儿编程题库学习中心-嗨信奥https://www.hixinao.com/tiku/scratch/show-5106.html?_shareid3 程序演示可查看: 转动的图形-scratch作品-少儿编程题库学习中心-嗨信奥https://www.hixinao.com/scratch/creation…

杰理科技JL703N双模蓝牙芯片—云信

杰理科技JL703N芯片运算能力、接收灵敏度、发射功率、音频性能等指标均处于行业一流水平,能满足多场景的应用需求,具有以下明显优势: 一、高性能双核浮点CPU,算力十足 JL703N芯片搭载了32位高性能双核CPU,主频高达32…

Asp.net Core API 本地化

本文是一个demo,演示了如何根据用户接口查询字段(正常放header中),设置当前culture,并获取当前culture的key value给用户提示 创建Resources文件夹,添加以下三个文件 其中ExceptionUnuse 是一个空的类,供IStringLocalizer使用&a…

工业相机选型

工业相机选型 一、工业相机分类二、相机的主要参数2.1 分辨率2.2 速度2.3 光学接口 / 接口类型2.4 相机靶面尺寸2.5 像元尺寸2.6 精度 三、镜头介绍及选型方法3.1 工作距离(WD)3.2 视场角(FOV)3.3 (镜头)靶面尺寸3.4 帧率3.5 光圈…

eFish-SBC-RK3576 工业相机(IMX系列)方案设计

一、核心硬件架构 1. ‌图像传感器配置‌ ‌IMX系列选型‌: IMX678(1/1.8" CMOS,2000万像素,全局快门,HDR 120dB)IMX541(2/3" CMOS,1200万像素,12bit ADC&…