打卡Day28

题目1:定义圆(Circle)类
要求:
1.包含属性:半径 radius。
2.包含方法:
●calculate_area():计算圆的面积(公式:πr²)。
●calculate_circumference():计算圆的周长(公式:2πr)。
3.初始化时需传入半径,默认值为 1。

import mathclass Circle:def __init__(self, radius=1):self.radius = radius # 外界的参数,需要通过self.xxx来复制给类自己的属性def calculate_area(self):return math.pi * (self.radius ** 2)def calculate_circumference(self):return 2 * math.pi * self.radius
# 测试
circle = Circle(5)
print("Area:", circle.calculate_area())
print("Circumference:", circle.calculate_circumference())

题目2:定义长方形(Rectangle)类
1.包含属性:长 length、宽 width。
2.包含方法:
●calculate_area():计算面积(公式:长×宽)。
●calculate_perimeter():计算周长(公式:2×(长+宽))。 is_square() 方法,判断是否为正方形(长 == 宽)。
3.初始化时需传入长和宽,默认值均为 1。

class Rectangle:def __init__(self, length=1, width=1):self.length = length # 外界的参数,需要通过self.xxx来复制给类自己的属性self.width = widthdef calculate_area(self):return self.length * self.widthdef calculate_circumference(self):return 2 * (self.length  + self.width)def is_square(self):return self.length == self.width
# 测试
rectangle = Rectangle(5,5)
print("Area:", rectangle.calculate_area())
print("Circumference:", rectangle.calculate_circumference())

题目3:图形工厂
创建一个工厂函数 create_shape(shape_type, *args),根据类型创建不同图形对象:图形工厂(函数或类)
shape_type=“circle”:创建圆(参数:半径)。
shape_type=“rectangle”:创建长方形(参数:长、宽)。

# 与前面几个题不同,这题是创造一个函数,但是需要用到前面类
# 由于circle和rectangle是形状,所以可以定义一个形状类,然后circle和rectangle继承形状类
# 但是二者参数不同
def create_shape(shape_type, *args):# 检查形状类型if shape_type == "circle":if len(args) != 1: #如果 shape_type 是 "rectangle",则检查 args 是否有两个元素(即长度和宽度)。raise ValueError("Circle requires exactly one argument: radius.") #如果参数数量不正确,抛出异常。return Circle(*args) elif shape_type == "rectangle": #否则,使用传入的长度和宽度创建并返回一个 Rectangle 对象if len(args) != 2:raise ValueError("Rectangle requires exactly two arguments: length and width.")return Rectangle(*args)else:raise ValueError(f"Unknown shape type: {shape_type}") #如果形状类型未知,抛出异常。
# 测试
circle = create_shape("circle", 5)
print("Circle Area:", circle.calculate_area())
print("Circle Circumference:", circle.calculate_circumference())

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

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

相关文章

BERT 进阶:Albert 模型详解与实战

目录 BERT 进阶:Albert 模型详解与实战 一、ALBERT 的优化策略 (一)Embedding 参数因式分解 (二)跨层参数共享 (三)巨剑连贯性损失 二、ALBERT 模型架构 (一)Tran…

使用 163 邮箱实现 Spring Boot 邮箱验证码登录

使用 163 邮箱实现 Spring Boot 邮箱验证码登录 本文将详细介绍如何使用网易 163 邮箱作为 SMTP 邮件服务器,实现 Spring Boot 项目中的邮件验证码发送功能,并解决常见配置报错问题。 一、为什么需要邮箱授权码? 出于安全考虑,大…

深入解析Spring Boot与Spring Security的集成实践

深入解析Spring Boot与Spring Security的集成实践 引言 在现代Web应用开发中,安全性是一个不可忽视的重要方面。Spring Security作为Spring生态中的安全框架,提供了强大的认证和授权功能。本文将结合Spring Boot,详细介绍如何集成Spring Se…

C#将1GB大图裁剪为8张图片

C#处理超大图片(1GB)需要特别注意内存管理和性能优化。以下是几种高效裁剪方案: 方法1:使用System.Drawing分块处理(内存优化版) using System; using System.Drawing; using System.Drawing.Imaging; us…

Linux系统启动相关:vmlinux、vmlinuz、zImage,和initrd 、 initramfs,以及SystemV 和 SystemD

目录 一、vmlinux、vmlinuz、zImage、bzImage、uImage 二、initrd 和 initramfs 1、initrd(Initial RAM Disk) 2、initramfs(Initial RAM Filesystem) 3、initrd vs. initramfs 对比 4. 如何查看和生成 initramfs 三、Syste…

AIStarter Windows 版本迎来重磅更新!模型插件工作流上线,支持 Ollama / ComfyUI 等多平台本地部署模型统一管理

如果你正在使用 AIStarter 工具进行本地 AI 模型部署 ,那么这条消息对你来说非常重要! 在最新推出的 AIStarter Windows 正式版更新中 ,官方对整个平台进行了功能重构和性能优化,尤其是新增了「模型插件工作流 」功能&#xff0c…

深入理解桥接模式:解耦抽象与实现的设计艺术

一、为什么需要桥接模式?从“类爆炸”问题说起 你是否遇到过这样的开发困境? 当需要为系统扩展新功能时,继承体系像滚雪球一样越变越臃肿:新增一种遥控器类型,需要为电视、音响各写一个子类;新增一种设备类…

Java 中的泛型原理与实践案例

引言:为什么需要泛型 在Java 5之前,集合类只能存储Object类型的对象,这带来了两个主要问题: 类型不安全:可以向集合中添加任何类型的对象,容易出错繁琐的类型转换:从集合中取出元素时需要手动…

springboot3+vue3融合项目实战-大事件文章管理系统-获取文章分类详情

GetMapping("/detail")public Result<Category> detail(Integer id){Category c categoryService.findById(id);return Result.success(c);}在CategoryService接口增加 Category findById(Integer id); 在CategoryServiceImpl增加 Overridepublic Category f…

从零开始创建一个 Next.js 项目并实现一个 TodoList 示例

Next.js 是一个基于 React 的服务端渲染框架&#xff0c;它提供了很多开箱即用的功能&#xff0c;如自动路由、API 路由、静态生成、增量静态再生等。本文将带你一步步创建一个 Next.js 项目&#xff0c;并实现一个简单的 TodoList 功能。 效果地址 &#x1f9f1; 安装 Next.j…

分布式锁: Redisson红锁(RedLock)原理与实现细节

分布式锁是分布式系统的核心基础设施&#xff0c;但 单节点 Redis 锁在高可用场景下存在致命缺陷&#xff1a;当 Redis 主节点宕机时&#xff0c;从节点可能因异步复制未完成而丢失锁信息&#xff0c;导致多个客户端同时持有锁。为此&#xff0c;Redis 作者 Antirez 提出了 Red…

c++多态面试题之(析构函数与虚函数)

有以下问题展开 析构函数要不要定义成虚函数&#xff1f;基类的析构函数要不要定义成虚函数&#xff1f;如果不定义会有什么问题&#xff0c;定义了在什么场景下起作用。 1. 基类析构函数何时必须定义为虚函数&#xff1f; 当且仅当通过基类指针&#xff08;或引用&#xff09;…

Python高级进阶:Vim与Vi使用指南

李升伟 整理 在 Python 高级进阶中&#xff0c;使用 Vim 或 Vi 作为代码编辑器可以显著提升开发效率&#xff0c;尤其是在远程服务器开发或快速脚本编辑时。以下是关于它们在 Python 开发中的高级应用详解&#xff1a; 1. Vim/Vi 简介 Vi&#xff1a;经典的 Unix 文本编辑器…

Dify中使用插件LocalAI配置模型供应商报错

服务器使用vllm运行大模型&#xff0c;今天在Dify中使用插件LocalAI配置模型供应商后&#xff0c;使用工作流的时候&#xff0c;报错&#xff1a;“Run failed: PluginInvokeError: {"args":{},"error_type":"ValueError","message":&…

深度学习驱动下的目标检测技术:原理、算法与应用创新(二)

三、主流深度学习目标检测算法剖析 3.1 R - CNN 系列算法 3.1.1 R - CNN 算法详解 R - CNN&#xff08;Region - based Convolutional Neural Networks&#xff09;是将卷积神经网络&#xff08;CNN&#xff09;应用于目标检测领域的开创性算法&#xff0c;其在目标检测发展历…

【Umi】项目初始化配置和用户权限

app.tsx import { RunTimeLayoutConfig } from umijs/max; import { history, RequestConfig } from umi; import { getCurrentUser } from ./services/auth; import { message } from antd;// 获取用户信息 export async function getInitialState(): Promise<{currentUse…

[学习] RTKLib详解:qzslex.c、rcvraw.c与solution.c

RTKLib详解&#xff1a;qzslex.c、rcvraw.c与solution.c 本文是 RTKLlib详解 系列文章的一篇&#xff0c;目前该系列文章还在持续总结写作中&#xff0c;以发表的如下&#xff0c;有兴趣的可以翻阅。 [学习] RTKlib详解&#xff1a;功能、工具与源码结构解析 [学习]RTKLib详解…

移植RTOS,发现任务栈溢出怎么办?

目录 1、硬件检测方法 2、软件检测方法 3、预防堆栈溢出 4、处理堆栈溢出 在嵌入式系统中&#xff0c;RTOS通过管理多个任务来满足严格的时序要求。任务堆栈管理是RTOS开发中的关键环节&#xff0c;尤其是在将RTOS移植到新硬件平台时。堆栈溢出是嵌入式开发中常见的错误&am…

window 显示驱动开发-使用有保证的协定 DMA 缓冲区模型

Windows Vista 的显示驱动程序模型保证呈现设备的 DMA 缓冲区和修补程序位置列表的大小。 修补程序位置列表包含 DMA 缓冲区中命令引用的资源的物理内存地址。 在有保证的协定模式下&#xff0c;用户模式显示驱动程序知道 DMA 缓冲区和修补程序位置列表的确切大小&#xff0c;…

SD-HOST Controller design-----SD CLK 设计

hclk的分频电路&#xff0c;得到的分频时钟作为sd卡时钟。 该模块最终输出两个时钟&#xff1a;一个为fifo_sd_clk,另一个为out_sd_clk_dft。当不分频时&#xff0c;fifo_sd_clk等于hclk&#xff1b;当分频时候&#xff0c;div_counter开始计数&#xff0c;记到相应分频的时候…