实验课题目: 1、重写醉汉行走问题。使用Point类,每一步可以看作是利用随机参数创建的一个Point对象。Point类可能需要适当修改。 2、写一个Rectangle类,描述一个矩形。 具备以下域: 四个顶点的坐标leftTop,rightTop,leftFloor,rightFloor,以Point对象表示; 图形的周长; 图形的面积。 构造器: 无参构造器 Rectangle(),生成一个四个顶点均为(0.0,0.0)的矩形; Rectangle(double x1, double y1, double x2, double y2),其中(x1, y1)是一个顶点,其中(x2, y2)是对角线上另一个顶点; Rectangle(Point p1,Point p2),p1、p2是对角线上的两个顶点。 设计如下方法: Point getLeftTop(); Point getLeftFloor(); Point getRightTop(); Point getRightFloor(); 返回周长; 返回面积。 写一个测试类,测试Rectangle类。

时间: 2023-04-12 16:00:32 浏览: 54
好的,让我来回答你的问题。 对于第一个问题,我可以回答。以下是重写醉汉行走问题的代码: ```python import random class Point: def __init__(self, x=0.0, y=0.0): self.x = x self.y = y class Drunk: def __init__(self, name): self.name = name self.current_position = Point() def walk(self): x_step = random.uniform(-1, 1) y_step = random.uniform(-1, 1) self.current_position.x += x_step self.current_position.y += y_step def get_position(self): return self.current_position def __str__(self): return self.name def main(): drunk = Drunk('Jack') for i in range(10): drunk.walk() print(drunk.get_position()) if __name__ == '__main__': main() ``` 对于第二个问题,我也可以回答。以下是Rectangle类的代码: ```python import math class Point: def __init__(self, x=0.0, y=0.0): self.x = x self.y = y class Rectangle: def __init__(self, *args): if len(args) == 0: self.left_top = Point() self.right_top = Point() self.left_floor = Point() self.right_floor = Point() elif len(args) == 2: self.left_top = args[0] self.right_floor = args[1] self.right_top = Point(self.right_floor.x, self.left_top.y) self.left_floor = Point(self.left_top.x, self.right_floor.y) elif len(args) == 4: self.left_top = Point(args[0], args[1]) self.right_floor = Point(args[2], args[3]) self.right_top = Point(self.right_floor.x, self.left_top.y) self.left_floor = Point(self.left_top.x, self.right_floor.y) def get_left_top(self): return self.left_top def get_left_floor(self): return self.left_floor def get_right_top(self): return self.right_top def get_right_floor(self): return self.right_floor def get_perimeter(self): width = abs(self.right_floor.x - self.left_top.x) height = abs(self.right_floor.y - self.left_top.y) return 2 * (width + height) def get_area(self): width = abs(self.right_floor.x - self.left_top.x) height = abs(self.right_floor.y - self.left_top.y) return width * height def main(): rectangle1 = Rectangle() print(rectangle1.get_left_top()) print(rectangle1.get_left_floor()) print(rectangle1.get_right_top()) print(rectangle1.get_right_floor()) print(rectangle1.get_perimeter()) print(rectangle1.get_area()) rectangle2 = Rectangle(1, 1, 3, 3) print(rectangle2.get_left_top()) print(rectangle2.get_left_floor()) print(rectangle2.get_right_top()) print(rectangle2.get_right_floor()) print(rectangle2.get_perimeter()) print(rectangle2.get_area()) rectangle3 = Rectangle(Point(1, 1), Point(3, 3)) print(rectangle3.get_left_top()) print(rectangle3.get_left_floor()) print(rectangle3.get_right_top()) print(rectangle3.get_right_floor()) print(rectangle3.get_perimeter()) print(rectangle3.get_area()) if __name__ == '__main__': main() ``` 最后,我希望我的回答能够帮助到你。

相关推荐

最新推荐

recommend-type

实验04 Java面向对象编程2.doc

3、编写一个Java程序,在程序中定义一个School类,在School类中定义一个内部类Student,分别创建这两个类的对象,访问各个对象中的方法,其中: School类: 数据成员:学院名称schoolName; 成员方法:显示信息方法...
recommend-type

杭电计算机考研复试专业课问题.pdf

杭电计算机考研复试七门专业课问题,总结了历届老师问过和自己总结的共400余题及其答案,涵盖所有知识点,本人为杭电计算机2021年上岸考生。
recommend-type

C++标准库:std_set作为一个有序集合

std::set作为标准库的一个关联容器,实现内部元素进行了排序,使用这特性可以对一组元素进行插入排序。std::set最初的设计是完成数学中“集合”的概念,它提供的接口也是如此。
recommend-type

Python实验课4-13习题及答案.docx

Python实验课4-13习题及答案.docx Python 数据科学基础 课后习题答案 大学IT实验教程 期末复习
recommend-type

数据库系统原理实验五/大作业:数据库设计与应用开发大作业

为某个部门或单位开发一个数据库应用系统,具体内容包括:对某个部门或单位业务和数据进行调查,系统分析,系统设计,数据库设计,数据库创建和数据加载,能够使用后台SQL语句编程实现所需功能,系统测试和分析,大...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

可见光定位LED及其供电硬件具体型号,广角镜头和探测器,实验设计具体流程步骤,

1. 可见光定位LED型号:一般可使用5mm或3mm的普通白色LED,也可以选择专门用于定位的LED,例如OSRAM公司的SFH 4715AS或Vishay公司的VLMU3500-385-120。 2. 供电硬件型号:可以使用常见的直流电源供电,也可以选择专门的LED驱动器,例如Meanwell公司的ELG-75-C或ELG-150-C系列。 3. 广角镜头和探测器型号:一般可采用广角透镜和CMOS摄像头或光电二极管探测器,例如Omron公司的B5W-LA或Murata公司的IRS-B210ST01。 4. 实验设计流程步骤: 1)确定实验目的和研究对象,例如车辆或机器人的定位和导航。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。