第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.pswp.cn/pingmian/72898.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72898.shtml
英文地址,請注明出處:http://en.pswp.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;景氣水平穩步恢復。 普惠金融-景氣指數…