当前位置: 首页 > article >正文

第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  

 

相关文章:

第7章 类与面向对象

6-1 二维平面上的点操作(Python3) 题目描述 设计一个表示二维平面上点的类 Point。该类应该包含以下功能: 两个私有属性 _x 和 _y,分别表示点的横坐标和纵坐标。 一个构造函数 __init__,用于初始化点的坐标。 一个…...

架构设计的灵魂交响曲:系统设计各维度的深度解析与实战指南

引言: 系统设计的背景与重要性 在快速变化的技术环境中,数字化转型成为企业生存与发展的核心驱动力。系统设计能力不仅是技术团队的核心竞争力,也是推动业务创新和提升整体效率的关键因素。根据Gartner的研究,超过70%的数字化转型项目未能实…...

[贪心算法]买卖股票的最佳时机 买卖股票的最佳时机Ⅱ K次取反后最大化的数组和 按身高排序 优势洗牌(田忌赛马)

1.买卖股票的最佳时机 暴力解法就是两层循环&#xff0c;找出两个差值最大的即可。 优化&#xff1a;在找最小的时候不用每次都循环一遍&#xff0c;只要在i向后走的时候&#xff0c;每次记录一下最小的值即可 class Solution { public:int maxProfit(vector<int>& p…...

【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring MVC 的核心组件:DispatcherServlet 的工作原理

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、Dispat…...

第J3周:DenseNet121算法实现01(Pytorch版)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标 具体实现 &#xff08;一&#xff09;环境 语言环境&#xff1a;Python 3.10 编 译 器: PyCharm 框 架: Pytorch &#xff08;二&#xff09;具体步骤…...

webrtc3A算法

使用ubuntu18.04 选择webrtc_audio_processing v0.3 下载地址 https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/-/tree/master git clone 完 编译 # Initialise into the build/ directory, for a prefixed install into the # install/ directory meson …...

让“树和二叉树”埋在记忆土壤中--性质和概念

Nice to meet your! 目录 树的介绍&#xff1a; 树的创建&#xff1a; 二叉树的概念和结构&#xff1a; 二叉树的存储结构&#xff1a; 树的介绍&#xff1a; 概念和结构&#xff1a; 不知你们是否在现实中看见过分为两个叉的枯树&#xff0c;大概长这样&#xff1a; 那…...

git clone项目报错fatal: fetch-pack: invalid index-pack output问题

前情回顾&#xff1a;git项目放在公司服务器上面&#xff0c;克隆等操作需要连接VPN才能操作。由于项目比较大&#xff0c;网速比较慢&#xff0c;克隆项目经常出现fetch-pack: invalid index-pack output。在网上查找各种解决方法。也就这一种有点效果。仅供参考&#xff0c;不…...

Spring Boot整合SSE实现消息推送:跨域问题解决与前后端联调实战

摘要 本文记录了一次完整的Spring Boot整合Server-Sent Events&#xff08;SSE&#xff09;实现实时消息推送的开发过程&#xff0c;重点分析前后端联调时遇到的跨域问题及解决方案。通过CrossOrigin注解的实际应用案例&#xff0c;帮助开发者快速定位和解决类似问题。 一、项…...

【工具分享】vscode+deepseek的接入与使用

目录 第一章 前言 第二章 获取Deepseek APIKEY 2.1 登录与充值 2.2 创建API key 第三章 vscode接入deepseek并使用 3.1 vscode接入deepseek 3.2 vscode使用deepseek 第一章 前言 deepseek刚出来时有一段时间余额无法充值&#xff0c;导致小编没法给大家发完整的流程&…...

康谋方案 | AVM合成数据仿真验证方案

随着自动驾驶技术的快速发展&#xff0c;仿真软件在开发过程中扮演着越来越重要的角色。仿真传感器与环境不仅能够加速算法验证&#xff0c;还能在安全可控的条件下进行复杂场景的重复测试。 本文将分享如何利用自动驾驶仿真软件配置仿真传感器与搭建仿真环境&#xff0c;并对…...

Linux内核IPv4路由选择子系统

一、基本知识 1.具体案例&#xff1a;直连路由 结构fib_nh表示下一跳&#xff0c;包含输出网络设备、外出接口索引等信息。 有两个以太网局域网 LAN1 和 LAN2&#xff0c;其中 LAN1 包含子网 192.168.1.0/24&#xff0c;而 LAN2 包含子网 192.168.2.0/24。在这两个 LAN 之…...

NWAFU 生物统计实验二 R语言版

#1 setwd(修改为你的工作路径或桌面路径) feed_types <- c("A", "B", "C") weight_gain_means <- c(36.8, 34.9, 21.3) weight_gain_sds <- c(2.4, 2.7, 6.6) weight_gain <- rnorm(3, mean weight_gain_means, sd weight_gain_sd…...

Thinkphp指纹识别

识别ThinkPHP框架(指纹) 1.ioc判断 /favicon.ico 2.报错 /1 然后使用工具梭哈...

【AVRCP】蓝牙AVRCP协议中的L2CAP互操作性要求深度解析

目录 一、L2CAP互操作性要求&#xff08;针对AVRCP&#xff09; 1.1 核心概念 1.2 AVRCP对L2CAP的增强需求 1.3 关键机制解析 1.4 浏览通道优化配置 1.5 实际应用场景与解决方案 二、通道类型与配置 2.1. 通道类型限制 2.2 PSM字段规范 2.3. 实现意义 3.4. 实际应用…...

剑指 Offer II 111. 计算除法

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20111.%20%E8%AE%A1%E7%AE%97%E9%99%A4%E6%B3%95/README.md 剑指 Offer II 111. 计算除法 题目描述 给定一个变量对数组 equations 和一个实数值数组 values 作…...

掌握 WRF/Chem 模式:突破大气环境研究技术瓶颈的关键

技术点目录 第一部分、WRF-Chem模式应用案例和理论基础第二部分、Linux环境配置及WRF-CHEM第三部分、WRF-Chem模式编译&#xff0c;排放源制作第四部分、WRF-Chem数据准备&#xff08;气象、排放、初边界条件等&#xff09;&#xff0c;案例实践第五部分、模拟结果提取、数据可…...

linux性能监控的分布式集群 prometheus + grafana 监控体系搭建

prometheusgrafana分布式集群资源监控体系搭建 前言一、安装 prometheus二、在要监控的服务器上安装监听器三、prometheus服务器配置四、grafana配置大屏五、创建Linux监控看板五、监控windows服务器注意事项 前言 Prometheus 是一个开源的 ​分布式监控系统 和 ​时间序列数据…...

数字化转型 2.0:AI、低代码与智能分析如何重塑企业竞争力?

引言&#xff1a;数字化转型进入2.0时代 在过去的十几年里&#xff0c;企业的数字化转型&#xff08;1.0&#xff09;主要围绕信息化和自动化展开&#xff0c;例如引入ERP、CRM等系统&#xff0c;提高办公效率&#xff0c;减少人为失误。然而&#xff0c;随着市场竞争加剧&…...

柔性PZT压电薄膜触觉传感器在人形机器人的应用

柔性PZT压电薄膜声阻抗与人体组织匹配好&#xff0c;具有可弯曲性&#xff0c;可以贴附在非平整物体表面进行使用&#xff1b;而且具有受力后易弯曲的特点&#xff0c;器件的输出信号强&#xff0c;可用于穿戴产品&#xff0c;比如可以制作多路脉搏传感器用于智能多通道脉诊仪&…...

基于SpringBoot的“校园招聘网站”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“校园招聘网站”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统整体功能图 局部E-R图 系统首页界面 系统注册…...

基于FPGA的DDS连续FFT 仿真验证

基于FPGA的 DDS连续FFT 仿真验证 1 摘要 本文聚焦 AMD LogiCORE IP Fast Fourier Transform (FFT) 核心,深入剖析其在 FPGA 设计中的应用。该 FFT 核心基于 Cooley - Tukey 算法,具备丰富特性,如支持多种数据精度、算术类型及灵活的运行时配置。文中详细介绍了其架构选项、…...

由LAC自动建立L2TP实验

一、实验拓扑: 二、实验配置 1.LAC的配置 基础配置: [LAC]int g 0/0/0 [LAC-GigabitEthernet1/0/0]ip address 192.168.0.1 24 [LAC]int g 1/0/0 [LAC-GigabitEthernet1/0/0]ip address 10.1.1.254 24 [LAC-GigabitEthernet1/0/0]int g1/0/1 [LAC-GigabitEthernet1/0/1]ip ad…...

内网渗透(CSMSF) 构建内网代理的全面指南:Cobalt Strike 与 Metasploit Framework 深度解析

目录 1. Cobalt Strike 在什么情况下会构建内网代理&#xff1f; 2. Cobalt Strike 构建内网代理的主要作用和目的是什么&#xff1f; 3. Cobalt Strike 如何构建内网代理&#xff1f;需要什么条件和参数&#xff1f; 条件 步骤 参数 4. Cobalt Strike 内网代理能获取什…...

[AI速读]混合语言IP集成:挑战与高效解决方案

在现代SoC(系统级芯片)设计中,IP(知识产权模块)复用是提升开发效率的关键。然而,当设计涉及多种硬件描述语言(如SystemVerilog、VHDL、SystemC)时,如何高效集成不同语言的IP模块成为一大难题。本文将从实际设计场景出发,探讨混合语言IP集成的核心挑战,并介绍一套方法…...

利用ffmpeg库实现音频Opus编解码

一、编译与环境配置 ‌libopus库集成‌ 需在编译FFmpeg时添加--enable-libopus参数&#xff0c;编译前需先安装libopus源码并配置动态库路径‌。最新FFmpeg 7.1版本默认支持Opus的浮点运算优化和VBR/CVBR模式‌。 ‌多平台兼容性‌ Opus支持Windows/Linux/macOS平台&#xff0…...

SAP FAGLL03 追加并显示描述字段

目录 1、新建一个结构2、操作FAGLPOSX结构3、新建一个BADI 1、新建一个结构 1.1、先在SE11中新建一个结构&#xff1a;ZZADD_FIELDS_FAGL&#xff0c;把我们要显示的描述字段放在这个结构中 2、操作FAGLPOSX结构 2.1、在FAGLPOSX结构中选择Append Structure&#xff0c;把我…...

Linux Vim 寄存器 | 从基础分类到高级应用

注&#xff1a;本文为 “vim 寄存器” 相关文章合辑。 英文引文&#xff0c;机翻未校。 中文引文&#xff0c;略作重排。 未整理去重&#xff0c;如有内容异常&#xff0c;请看原文。 Registers 寄存器 Learning Vim registers is like learning algebra for the first ti…...

Ubuntu版免翻墙搭建BatteryHistorian

摘要 昨天安装了一个翻墙版本的很不好用&#xff0c;主要是网络不稳定&#xff0c;故于是换了一个免翻墙的docker镜像。但是发现还是很难用。又安装了一个window版本的免翻墙的BatteryHistorian。明天再分享下Windows的免翻墙的BatteryHistorian步骤。 安装好Docker了就直接d…...

Django Rest Framework 创建纯净版Django项目部署DRF

描述创建纯净版的Django项目和 Django Rest Framework 环境的部署 一、创建Django项目 1. 环境说明 操作系统 Windows11python版本 3.9.13Django版本 V4.2.202. 操作步骤(在Pycharm中操作) 创建Python项目drfStudy、虚拟环境 ​虚拟环境中安装 jdangopip install django==4.…...