第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.mzph.cn/pingmian/72898.shtml

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

相关文章

算法训练篇06--力扣611.有效三角形的个数

目录 1.题目链接:611.有效三角形的个数 2.题目描述: 3.解法一:(暴力解法)(会超时): 4.解法二(排序双指针) 1.题目链接:611.有效三角形的个数 2.题目描述: 给定一个包含非负整数的数组 nums &#xf…

网络编程之解除udp判断客户端是否断开

思路&#xff1a;每几秒发送一条不显示的信息&#xff0c;客户端断开则不再发送信息&#xff0c;超时则表示客户端断开连接。&#xff08;心跳包&#xff09; 服务器 #include <head.h>#define MAX_CLIENTS 100 // 最大支持100个客户端 #define TIMEOUT 5 // 5秒…

Python Cookbook-4.8 二维阵列变换

任务 需要变换一个列表的列表&#xff0c;将行换成列&#xff0c;列换成行。 解决方案 需要一个列表&#xff0c;其中的每一项都是同样长度的列表&#xff0c;像这样 arr [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]列表推导提供了简单方便的方法以完成二维阵列的转换: print …

B树与B+树在MySQL中的应用:索引

数据结构演示网站&#xff1a;Data Structure Visualization 先来了解两个数据结构B树与B树 B树&#xff1a; N阶B树每个节点最多存储N-1个Key&#xff0c;N个指针 例如&#xff1a;一个5阶B树&#xff0c;当前节点存储到5个Key时&#xff0c;中间的数会向上分离&#xff0c;…

【重构小程序】基于Tika和Langchain4J进行文件解析和文本切片(二)

为了将大语言模型植入到小程序中&#xff0c;来支持用户的问答。那我们首先需要做的是什么呢&#xff0c;不是引入大语言模型&#xff0c;而且为大语言模型搭建一个私有化知识库&#xff0c;但是这是这节呢&#xff0c;我们先不搭建私有化知识库&#xff0c;在这之前&#xff0…

python|exm6-1try-except结构|raise关键字|异常类型

目录 一、try-expect 1. 多个try-expect结构的使用 1.1 捕捉特定异常 1.2 捕捉全部异常 1.3 所有异常合并处理 2. try-except-else-finally 结构 二、raise 关键字 一、try-expect try-expect 结构是 Python 中用于异常处理的关键机制。它允许你捕获并处理代码中可能发生…

小蓝的括号串1(栈,蓝桥云课)

问题描述 小蓝有一个长度为 nn 的括号串&#xff0c;括号串仅由字符 ( 、 ) 构成&#xff0c;请你帮他判断一下该括号串是否合法&#xff0c;合法请输出 Yes &#xff0c;反之输出 No 。 合法括号序列&#xff1a; 空串是合法括号序列。 若 ss 是合法括号序列&#xff0c;则 (…

Centos7配置本地yum源

Centos7配置本地yum源 1、基于iso镜像的centos源 1.1 准备iso <span style"color:#000000"><span style"background-color:#ffffff"><code class"language-bash"><span style"color:#008000"># 首先看自己使用…

VNA操作使用学习-14 再测晶振特性

再测一下4Mhz晶振&#xff0c;看看特性曲线&#xff0c;熟悉一下vna使用。 s11模式&#xff0c;找遍了各种format都无法显示&#xff0c;只有这一种&#xff08;s11&#xff0c;Resistance&#xff09;稍微显示出一个谐振&#xff0c;但是只有一个点。 s21模式 这是201p&#…

Tr0ll2靶机详解

一、主机发现 arp-scan -l靶机ip&#xff1a;192.168.55.164 二、端口扫描、漏洞扫描、目录枚举、指纹识别 2.1端口扫描 nmap --min-rate 10000 -p- 192.168.55.164发现21端口的ftp服务开启 以UDP协议进行扫描 使用参数-sU进行UDP扫描 nmap -sU --min-rate 10000 -p- 19…

基于开源模型的微调训练及瘦身打造随身扫描仪方案__用AI把手机变成文字识别小能手

基于开源模型的微调训练及瘦身打造随身扫描仪方案__用AI把手机变成文字识别小能手 一、准备工作&#xff1a;组装你的"数码工具箱" 1. 安装基础工具&#xff08;Python环境&#xff09; 操作步骤&#xff1a; 访问Python官网下载安装包安装时务必勾选Add Python to…

GitHub 超火的开源终端工具——Warp

Warp 作为近年来 GitHub 上备受瞩目的开源终端工具&#xff0c;以其智能化、高性能和协作能力重新定义了命令行操作体验。以下从多个维度深入解析其核心特性、技术架构、用户评价及生态影响力&#xff1a; 一、背景与核心团队 Warp 由前 GitHub CTO Jason Warner 和 Google 前…

使用C#创建安装Windows服务程序

在实际工作中&#xff0c;如果我们需要开发一个运行在后台&#xff0c;无需用户交互&#xff0c;不需要界面的应用程序&#xff0c;我们可以通过Windows服务来实现。 本文主要介绍如何基于C#创建一个Windows服务&#xff0c;来实现西门子PLC的定时读取保存。 一、Windows服务…

docker、docker-compose常用命令

初学者使用的docker、docker-compose常用命令&#xff0c;日常练习&#xff0c;环境简单搭建。 一、docker 1.1、安装docker 1.1.1、yum安装 #安装docker的数据存储驱动包 yum install -y yum-utils device-mapper-persistent-data lvm2 #设置新的安装源、下载配置文件到…

阿里的MNN源码如何编译成so文件,供Android调用

在Ubtuntu下面的编译&#xff0c;先整理编译环境 1、安装环境依赖 # 安装必要工具 sudo apt update sudo apt install -y cmake ninja-build git wget # 安装Android NDK&#xff08;建议使用r21版本或更高&#xff09; wget https://dl.google.com/android/repository/a…

吴恩达机器学习笔记复盘(六)梯度下降算法

简介 梯度下降&#xff08;Gradient Descent&#xff09;是一种常用的优化算法&#xff0c;广泛应用于机器学习、深度学习等领域&#xff0c;在这里是用于求J&#xff08;w,b&#xff09;局部最小值。 我自己觉得这样说有点过于抽象。换个直观点的说法就是&#xff0c;一个人…

使用JAVA-进行维吉尼亚密码的解密与加密

维吉尼亚密码 来源于百度百科 维吉尼亚密码_百度百科 具体代码 import java.util.*;public class WJMYmm {//常量 26public static final int N 26;//密码public static void main(String[] args) {//字母String ZM"abcdefghijklmnopqrstuvwxyz";char[] zm ZM.…

Java DelayQueue 延迟队列

Java DelayQueue 延迟队列 1. DelayQueue 概述 DelayQueue 是 Java 并发包&#xff08;java.util.concurrent&#xff09;中的一个 无界 阻塞队列&#xff0c;用于存储实现了 Delayed 接口的元素。队列中的元素只有在达到指定的延迟时间后才能被获取。 2. DelayQueue 的底层…

LeetCode 解题思路 22(Hot 100)

解题思路&#xff1a; 递归思路&#xff1a; 传入当前节点的最小值和最大值&#xff0c;递归判断左右子树。结束条件&#xff1a; 当前节点为空或不满足二叉搜索树。 Java代码&#xff1a; class Solution {public boolean isValidBST(TreeNode root) {return isValidBST(ro…

乐享数科:政策助推假日经济,2月普惠金融-景气指数稳中有升

数据显示&#xff0c;2025年2月普惠金融-景气指数达48.99点&#xff0c;较1月上升0.03点。 企业运行持续向好&#xff0c;企业信心预期和经营活力回升。“假日经济”与“政策效应”相互叠加&#xff0c;市场供求格局有所改善&#xff0c;景气水平稳步恢复。 普惠金融-景气指数…