SDUT—Python程序设计实验1011(面向对象)

news2024/11/16 3:20:36

7-1 sdut-oop-2 Shift Dot(类和对象)

给出平面直角坐标系中的一点,并顺序给出n个向量,求该点根据给定的n个向量位移后的位置。 设计点类Point,内含:
(1)整型属性x和y,表示点的横坐标和纵坐标; (2)带参构造方法,便于使用初始值构造该类对象;
(3)点移动的方法move(x1,y1),其 中x1和y1表示移动的向量,该方法返回移动后的新的点对象;
(4)展示点对象的字符串方法toString(),以“(横坐标,纵坐标)”的形式。

输入格式:
多组输入。
第一行是三个整数x,y,n,表示点的坐标(x,y),和向量的个数n。
接下来n行,每行两个数xi,yi,表示第i个向量。
题目中所有数据不会超出整型范围。

输出格式:
对于每组输入,输出一行,形式为:“(x,y)”,表示点的最终点位置的横坐标和纵坐标。

输入样例:

0 0 1
2 3
0 0 2
1 2
2 3

输出样例:

(2,3)
(3,5)

代码:

class Point:
    def __init__(self, x, y):
        self.x, self.y = x, y

    def move(self, x1, y1):
        self.x += x1
        self.y += y1

    def tostring(self):
        print("(%d,%d)" % (self.x, self.y))

while True:
    try:
        x, y, n = map(int, input().split())
        p = Point(x, y)
        for i in range(n):
            xi, yi = map(int, input().split())
            p.move(xi, yi)
        p.tostring()
    except:
        break

7-2 sdut-Time类的定义与使用

设计一个时间类Time。它拥有:
私有数据成员:hour(时)、minute(分)、second(秒);
公开的成员函数:

setHour(int)设置数据成员hour的值(采用12小时制),非法的输入默认为12;
setMinue(int)设置数据成员minute的值,非法输入默认为0;
setSecond(int)设置数据成员second的值,非法输入默认为0;
setTime(int,int,int)设置时、分、秒三个数据成员的值; showTime()显示时间对象的值。

在主函数main()中调用相应成员函数,使得时间对象的值能从键盘接收,并正确显示。
提示:时、分、秒均按2位数值形式显示 。

输入格式:
输入3个整数,用一个空格间隔。

输出格式:
输出 时、分、秒的值,中间用“:”间隔。

输入样例1:

10 11 12

输出样例1:

10:11:12

输入样例2:

58 23 85

输出样例2:

12:23:00

代码:

class Time:
    def __init__(self, h, m, s):
        self.h, self.m, self.s = h, m, s

    def sethour(self, h):
        if h > 12:
            self.h = 12
        else:
            self.h = h

    def setminute(self, m):
        if m > 60:
            self.m = 0
        else:
            self.m = m

    def setsecond(self, s):
        if s > 60:
            self.s = 0
        else:
            self.s = s

    def showtime(self):
        print("%02d:%02d:%02d" % (self.h, self.m, self.s))


hour, minute, second = map(int, input().split())
t = Time(hour, minute, second)
t.sethour(hour)
t.setminute(minute)
t.setsecond(second)
t.showtime()

7-3 sdut-谁是最强的女汉子

众所周知,一年一度的女汉子大赛又来啦。由于最近女汉子比较流行,所以参加女汉子比赛的人数变得很多很多。所以赛事组找来了你,让你写一个程序找出谁是最强的女汉子。
大家都知道,越是不漂亮的女生就越容易成为女汉子(漂亮的怎么会成为汉子?),而越是力量大的女生也越成为女汉子(毕竟女汉子还是比较有力量的)。
所以,就给女汉子两个属性,一个是漂亮值x,一个是力量值y。当然x的值越大,就代表这个女生就越漂亮。现在想让你求出来最不漂亮的女生有多少个,她们的力量和是多少。

输入格式:
先输入一个T,代表有T个人(T<10000)。
接下来T行,每行有两个数字x,y,分别代表这个女汉子的漂亮值和力量值(x,y<2*10^9) 。中间有1个空格分隔。

输出格式:
输出一行,有两个数字,分别代表最强的女汉子的数量,和她们的力量和。中间用1个空格分隔。

输入样例:

5
1 1
2 2
1 4
2 10
10 100

输出样例:

2 5

代码:

class Girl:
    def __init__(self, x, y):
        self.x, self.y = x, y

ls = []
n = int(input())
for i in range(n):
    x, y = map(int, input().split())
    ls.append(Girl(x, y))
ls = sorted(ls, key=lambda it: it.x)
cnt, sum = 0, 0
for it in ls:
    if it.x == ls[0].x:
        cnt += 1
        sum += it.y
print(cnt, sum)

7-4 sdut-oop-5 计算长方体和四棱锥的表面积和体积(类的继承)

计算如下立体图形的表面积和体积。
在这里插入图片描述
从图中观察,可抽取长方体和四棱锥两种立体图形的共同属性到父类Rect中:长度:l 宽度:h 高度:z。
编程要求:
(1)在父类Rect中,定义求底面周长的方法length( )和底面积的方法area( )。
(2)定义父类Rect的子类立方体类Cubic,计算立方体的表面积和体积。其中表面积area( )重写父类的方法。
(3)定义父类Rect的子类四棱锥类Pyramid,计算四棱锥的表面积和体积。其中表面积area( )重写父类的方法。
(4)在主程序中,输入立体图形的长(l)、宽(h)、高(z)数据,分别输出长方体的表面积、体积、四棱锥的表面积和体积。
提示:
(1)四棱锥体积公式:V= 1/3*Sh,S——底面积 h——高
(2)在Java中,利用Math.sqrt(a)方法可以求得a的平方根(方法的参数及返回结果均为double数据类型)
(3)在Python中,利用math模块的sqrt(a)方法,求得a的平方根。
输入格式:
输入多行数值型数据(double);

每行三个数值,分别表示l、h、z,数值之间用空格分隔。

若输入数据中有0或负数,则不表示任何图形,表面积和体积均为0。

输出格式:
行数与输入相对应,数值为长方体表面积 长方体体积 四棱锥表面积 四棱锥体积(中间有一个空格作为间隔,数值保留两位小数)。

输入样例:

1 2 3
0 2 3
-1 2 3
3 4 5

输出样例:

22.00 6.00 11.25 2.00
0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00
94.00 60.00 49.04 20.00

代码:

from math import *

class Rect:
    def __init__(self, l, h, z):
        if l <= 0 or h <= 0 or z <= 0:
            self.l, self.h, self.z = 0, 0, 0
        else:
            self.l, self.h, self.z = l, h, z

    def length(self):
        return (self.l + self.h) * 2.0
        
    def area(self):
        pass

class Cubic(Rect):
    def __init__(self, l, h, z):
        super().__init__(l, h, z)

    def area_1(self):
        return 2.0 * (self.l * self.h + self.l * self.z + self.h * self.z)

    def volume_1(self):
        return self.l * self.h * self.z

class Pyramid(Rect):
    def __init__(self, l, h, z):
        super().__init__(l, h, z)

    def area_2(self):
        return self.l * self.h + (self.h * sqrt((self.l / 2) * (self.l / 2) + self.z ** 2)) + (
                self.l * sqrt((self.h / 2) * (self.h / 2) + self.z ** 2))

    def volume_2(self):
        return self.l * self.h * self.z / 3.0


while True:
    try:
        l, h, z = map(float, input().split())
        c = Cubic(l, h, z)
        p = Pyramid(l, h, z)
        print("%.2f %.2f %.2f %.2f" % (c.area_1(), c.volume_1(), p.area_2(), p.volume_2()))
    except:
        break

7-5 sdut-oop-6 计算各种图形的周长(多态)

定义接口或类 Shape,定义求周长的方法length()。
定义如下类,实现接口Shape或父类Shape的方法。
(1)三角形类Triangle (2)长方形类Rectangle (3)圆形类Circle等
定义测试类ShapeTest,用Shape接口(或类)定义变量shape,用其指向不同类形的对象,输出各种图形的周长。并为其他的Shape接口实现类提供良好的扩展性。
提示: 计算圆周长时PI取3.14

输入格式:
输入多组数值型数据(double);
一行中若有1个数,表示圆的半径;
一行中若有2个数(中间用空格间隔),表示长方形的长度、宽度。
一行中若有3个数(中间用空格间隔),表示三角形的三边的长度。(需要判断三个边长是否能构成三角形)
若输入数据中有0或负数,则不表示任何图形,周长为0。

输出格式:
行数与输入相对应,数值为根据每行输入数据求得的图形的周长。

输入样例:
在这里给出一组输入。例如:

1
2 3
4 5 6
2
-2
-2 -3

输出样例:
在这里给出相应的输出。例如:

6.28
10.00
15.00
12.56
0.00
0.00

代码:

class Shape:
    def length(self):
        pass

class Triangle(Shape):
    def __init__(self, a, b, c):
        if a <= 0 or b <= 0 or c <= 0 or (not (a + b > c and a + c > b and b + c > a)):
            self.a, self.b, self.c = 0.0, 0.0, 0.0
        else:
            self.a, self.b, self.c = a, b, c

    def length(self):
        return self.a + self.b + self.c

class Rectangle(Shape):
    def __init__(self, a, b):
        if a <= 0 or b <= a:
            self.a, self.b = 0.0, 0.0
        else:
            self.a, self.b = a, b

    def length(self):
        return 2.0 * (self.a + self.b)

class Circle(Shape):
    def __init__(self, r):
        if r <= 0:
            self.r = 0.0
        else:
            self.r = r

    def length(self):
        return 2 * 3.14 * self.r

while True:
    try:
        ls = list(map(float, input().split()))
        if len(ls) == 1:
            c = Circle(ls[0])
            print("%.2f" % c.length())
        elif len(ls) == 2:
            r = Rectangle(ls[0], ls[1])
            print("%.2f" % r.length())
        elif len(ls) == 3:
            t = Triangle(ls[0], ls[1], ls[2])
            print("%.2f" % t.length())
    except EOFError:
        break

7-6 sdut-oop-9 计算长方形的周长和面积(类和对象)

设计一个长方形类Rect,计算长方形的周长与面积。
成员变量:整型、私有的数据成员length(长)、width(宽)
构造方法如下:

1)Rect(int length) —— 1个整数表示正方形的边长
(2)Rect(int length, int width)——2个整数分别表示长方形长和宽

成员方法:包含求面积和周长。(可适当添加其他方法)
要求:编写主函数,对Rect类进行测试,输出每个长方形的长、宽、周长和面积。

输入格式:
输入多组数据;
一行中若有1个整数,表示正方形的边长;
一行中若有2个整数(中间用空格间隔),表示长方形的长度、宽度。
若输入数据中有负数,则不表示任何图形,长、宽均为0。

输出格式:
每行测试数据对应一行输出,格式为:
长度 宽度 周长 面积(数据之间有1个空格分隔)

输入样例:
在这里给出一组输入。例如:

1
2 3
4 5
2
-2
-2 -3

输出样例:
在这里给出相应的输出。例如:

1 1 4 1
2 3 10 6
4 5 18 20
2 2 8 4
0 0 0 0
0 0 0 0

代码:

class Rect:
    def __init__(self, l, w):
        if l <= 0 or w <= 0:
            self.l, self.w = 0, 0
        else:
            self.l, self.w = l, w

    def area_1(self):
        return self.l * 4

    def area_2(self):
        return 2 * (self.l + self.w)

    def length_1(self):
        return self.l ** 2

    def length_2(self):
        return self.l * self.w

while True:
    try:
        ls = list(map(int, input().split()))
        if len(ls) == 1:
            r = Rect(ls[0], 1)
            print(r.l, r.l, r.area_1(), r.length_1())
        elif len(ls) == 2:
            r = Rect(ls[0], ls[1])
            print(r.l, r.w, r.area_2(), r.length_2())
    except EOFError:
        break

7-7 sdut-oop-7 答答租车系统(类的继承与多态 面向对象综合练习)

各位面向对象的小伙伴们,在学习了面向对象的核心概念——类的封装、继承、多态之后,答答租车系统开始营运了。
请你充分利用面向对象思想,为公司解决智能租车问题,根据客户选定的车型和租车天数,来计算租车费用,最大载客人数,最大载载重量。
公司现有三种车型(客车、皮卡车、货车),每种车都有名称和租金的属性;其中:客车只能载人,货车只能载货,皮卡车是客货两用车,即可以载人,也可以载货。
下面是答答租车公司的可用车型、容量及价目表:
在这里插入图片描述
要求:根据客户输入的所租车型的序号及天数,计算所能乘载的总人数、货物总数量及租车费用总金额。

输入格式:
首行是一个整数:代表要不要租车 1——要租车(程序继续),0——不租车(程序结束);
第二行是一个整数,代表要租车的数量N;
接下来是N行数据,每行2个整数m和n,其中:m表示要租车的编号,n表示租用该车型的天数。

输出格式:
若成功租车,则输出一行数据,数据间有一个空格,含义为:
载客总人数 载货总重量(保留2位小数) 租车金额(整数)
若不租车,则输出:
0 0.00 0(含义同上)

输入样例:

1
2
1 1
2 2

输出样例:
在这里给出相应的输出。例如:

15 0.00 1600

代码:

class Car:
    def __init__(self, n, p, t, m):
        self.n, self.p, self.t, self.m = n, p, t, m

car = dict()
car[1] = Car("A", 5, 0, 800)
car[2] = Car("B", 5, 0, 400)
car[3] = Car("C", 5, 0, 800)
car[4] = Car("D", 51, 0, 1300)
car[5] = Car("E", 55, 0, 1500)
car[6] = Car("F", 5, 0.45, 500)
car[7] = Car("G", 5, 2.0, 450)
car[8] = Car("H", 0, 3, 200)
car[9] = Car("I", 0, 25, 1500)
car[10] = Car("J", 0, 35, 2000)

opt = int(input())
if opt == 1:
    N = int(input())
    sum_p, sum_t, sum_m = 0, 0.0, 0
    for i in range(N):
        m, n = map(int, input().split())
        sum_p += car[m].p * n
        sum_t += car[m].t * n * 1.0
        sum_m += car[m].m * n
    print("%d %.2f %d" % (sum_p, sum_t, sum_m))
elif opt == 0:
    print("0 0.00 0")

212丨acc丨2022.12.03

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

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

相关文章

数据可视化之交通可视化

一 前言 智慧城市的概念自 2008年提出以来&#xff0c;在国际上引起广泛关注&#xff0c;并持续引发了全球智慧城市的发展热潮。智慧城市已经成为推进全球城镇化、提升城市治理水平、破解大城市病、提高公共服务质量、发展数字经济的战略选择。近年来&#xff0c;我国智慧城市…

rxjs pipeable operators(上)

rxjs pipeable operators&#xff08;上&#xff09; A Pipeable Operator is a function that takes an Observable as its input and returns another Observable. It is a pure operation: the previous Observable stays unmodified. 一个 Pipeable Operator 是一个接受一个…

Ubuntu空间不足,如何扩容

目录 1、硬盘操作步骤 2、Ubuntu命令操作&#xff1a;安装分区管理工具 3、分区结果展示 1、硬盘操作步骤 最近发现Ubuntu空间不足&#xff0c;怎么去扩容呢&#xff1f;第一步&#xff1a;点击【硬盘】 第二步&#xff1a;点击【扩展】 第三步&#xff1a;修改【最大磁盘…

创新洞察丨消费品牌D2C生存发展的3大差异化策略

在过去六年中&#xff0c;DTC 品牌的销售额增长了两倍&#xff0c;但另一个事实是&#xff0c;他们花费了数十亿美元于营销投入&#xff0c;品牌知名度却不见增长。Lego 创意总监James Gregson认为&#xff0c;在同质化的DTC品牌崛起之下&#xff0c;打造品牌差异成为生存的关键…

Jsp 学习笔记

代码可参考: Demo地址 1 入门 1.1 环境搭建 创建moven项目目录结构如下 1.2 依赖配置 <!-- 依赖 --> <dependencies><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>…

PyQt5可视化编程-图形界面开发工具QtDesigner和PyUIC

一、概述 Qt库是跨平台的 C库的集合&#xff0c;是最强大的 GUI库之一&#xff0c;可以实现高级 API来访问桌面和移动系统的各种服务。PyQt5是一套 Python绑定 Digia QT5应用的框架。PyQt5实现了一个 Python模块集&#xff0c;有 620个类&#xff0c;6000个函数和方法。PyQt5的…

【Oracle篇】Oracle集群-rac模式

Oracle rac模式 RAC(real application clusters) 整个集群系统又分为 oracle Clusterware (集群就绪软件)和 Real Application(RA) 两大部分组成。 基本架构 rac 是 Oracle 数据库的高可用集群。传统数据库一个实例一个数据库&#xff0c; RAC 是多个实例&#xff0c;一个数…

四、值类型 和 引用类型

文章目录1、值类型 和 引用类型2、栈 和 堆3、特殊的引用类型 string4、通过 Debug调试 验证 string 的特殊1、值类型 和 引用类型 引用类型&#xff1a;string、数组、类 - 堆 值类型&#xff1a;其他的都是值类型 - 栈 2、栈 和 堆 栈空间&#xff1a;系统分配&#xff0…

Bootstrap5 教程

Bootstrap5 教程 Bootstrap 是全球最受欢迎的前端组件库&#xff0c;用于开发响应式布局、移动设备优先的 WEB 项目。 Bootstrap5 目前是 Bootstrap 的最新版本&#xff0c;是一套用于 HTML、CSS 和 JS 开发的开源工具集。它支持 Sass 变量和 mixins、响应式网格系统、大量的预…

HTML+CSS+JS鲜花商城网页设计期末课程大作业 web前端开发技术 web课程设计 网页规划与设计

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Java项目:ssm开发的Java快递代拿系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 使用技术 采用 Spring SpringMVC MyBatisPlus&#xff0c;连接池采用 Druid&#xff0c;安全框架使用 Shiro&#xff0c;前端采用 Bootstrap layer 实…

浅谈推荐系统之内容推荐

推荐系统概念相关 维基百科定义&#xff1a; 推荐系统是一种信息过滤系统&#xff0c;用于预测用户对物品的“评分”或“偏好”。 推荐系统近年来非常流行&#xff0c;应用于各行各业。推荐的对象包括&#xff1a;电影、音乐、新闻、书籍、学术论文、搜索查询、分众分类、以及…

vmware: 磁盘加载问题导致,emergency mode: login incorrect 滚动打印

文章目录问题调试&解释异常日志为什么进入Emergency shell 呢为什么local-fs.target 失败为什么storage.mount 超时服务单元的依赖关系那最后进入emergency mode 为什么会滚Login Incorrect 日志呢plymouthsystemd-sulogin-shellsulogin解决问题 VM虚拟机启动不正常。正常…

[附源码]计算机毕业设计作业查重系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计疫情管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

JS高级:Git

目录 集中式版本控制 ​编辑 分布式版本控制 Git 安装 bash-cmd-gui 基本使用 文件状态 git忽略文件 版本回退 远程仓库 gitee 凭证 SSH秘钥 管理远程仓库 开源协议 github git标签 git 分支 master 分支 分支操作 集中式版本控制 分布式版本控制 Git 安装 G…

景联文科技:一文读懂火爆全网的AIGC和背后的数据标注技术!

“在过去的几个月中&#xff0c;AIGC发展速度惊人&#xff0c;DALL-E、Midjourney和Stable Diffusion等技术的快速发展&#xff0c;创作出了许多由AI生成的艺术品。本文中&#xff0c;我们将为您阐述AIGC技术和背后所涉及的数据标注技术。" 今年八月&#xff0c;美国的一位…

计算机网络学习笔记(I)——概述

文章目录第一章—概述1.1、什么是Internet&#xff1f;从具体构成角度&#xff1a;什么是协议&#xff1f;从服务角度&#xff1a;1.2、网络边缘网络结构&#xff1a;网络边缘&#xff1a;网络边缘&#xff1a;采用网络设施的面向连接服务网络边缘&#xff1a;采用基础设施的无…

GIS工具maptalks开发手册(四)01——渲染地图信息框之添加绘制工具、获取点的坐标数据信息框进行展示

GIS工具maptalks开发手册(四)01——渲染地图信息框之添加绘制工具、获取点的坐标数据信息框进行展示 1、官网示例 官网示例-地图信息框——https://maptalks.org/examples/cn/ui-control/ui-map-infownd/#ui-control_ui-map-infownd 效果 代码 index.html <!DOCTYPE ht…

Vue 官方文档2.x教程学习笔记 1 基础 1.3 Vue 实例 1.3.1 创建一个Vue 实例 1.3.2 数据与方法

Vue 官方文档2.x教程学习笔记 文章目录Vue 官方文档2.x教程学习笔记1 基础1.3 Vue 实例1.3.1 创建一个Vue 实例1.3.2 数据与方法1 基础 1.3 Vue 实例 1.3.1 创建一个Vue 实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的&#xff1a; var vm new Vue({/…