定义接口或类 Shape,定义求周长的方法length()。 定义如下类,实现父类Shape的方法。 (1)三角形类Triangle (2)矩形类Rectangle (3)圆形类Circle等。 输入格式: 输入单行数据,以空格分隔: 一行中若有1个数,表示圆的半径,Pi取3.14; 一行中若有2个数,表示长方形的两条边的长度。 一行中若有3个数,表示三角形的三边的长度。(需要判断三个边长是否能构成三角形) 若输入数据中有0、负数或非法图形,则周长直接为0。 输出格式: 行数与输入相对应,数值为根据每行输入数据求得的图形的周长,结果均保留两位小数。
时间: 2024-03-08 19:46:25 浏览: 53
接口的应用Shape类,Rectangle、Triangle、Square
以下是题目所需的代码实现(Python 3):
```python
import math
class Shape:
def length(self):
return 0
class Triangle(Shape):
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
def length(self):
if self.a <= 0 or self.b <= 0 or self.c <= 0:
return 0
if self.a + self.b <= self.c or self.a + self.c <= self.b or self.b + self.c <= self.a:
return 0
return round(self.a + self.b + self.c, 2)
class Rectangle(Shape):
def __init__(self, a, b):
self.a = a
self.b = b
def length(self):
if self.a <= 0 or self.b <= 0:
return 0
return round(2 * (self.a + self.b), 2)
class Circle(Shape):
def __init__(self, r):
self.r = r
def length(self):
if self.r <= 0:
return 0
return round(2 * math.pi * self.r, 2)
input_data = input().split()
if len(input_data) == 1:
r = float(input_data[0])
shape = Circle(r)
elif len(input_data) == 2:
a = float(input_data[0])
b = float(input_data[1])
shape = Rectangle(a, b)
elif len(input_data) == 3:
a = float(input_data[0])
b = float(input_data[1])
c = float(input_data[2])
shape = Triangle(a, b, c)
else:
shape = Shape()
print("{:.2f}".format(shape.length()))
```
这是一个面向对象的实现方式,定义了一个 `Shape` 类作为接口或抽象类,其中包含一个 `length()` 方法。然后分别定义了三角形、矩形和圆形三个类,实现了 `Shape` 类的 `length()` 方法。
在输入数据时,根据输入数据的长度不同,实例化不同的对象。最后输出图形的周长,保留两位小数。
需要注意的是,在三角形类中,需要判断三条边长是否合法,即每两条边的和大于第三条边长。同时,如果输入数据中有0、负数或非法图形,则周长直接为0。
阅读全文