CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
jackfrued

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: jackfrued/Python-100-Days
Path: blob/master/Day01-15/code/Day09/triangle.py
Views: 729
1
"""
2
实例方法和类方法的应用
3
4
Version: 0.1
5
Author: 骆昊
6
Date: 2018-03-12
7
"""
8
9
from math import sqrt
10
11
12
class Triangle(object):
13
14
def __init__(self, a, b, c):
15
self._a = a
16
self._b = b
17
self._c = c
18
19
# 静态方法
20
@staticmethod
21
def is_valid(a, b, c):
22
return a + b > c and b + c > a and c + a > b
23
24
# 实例方法
25
def perimeter(self):
26
return self._a + self._b + self._c
27
28
# 实例方法
29
def area(self):
30
p = self.perimeter() / 2
31
return sqrt(p * (p - self._a) * (p - self._b) * (p - self._c))
32
33
34
if __name__ == '__main__':
35
# 用字符串的split方法将字符串拆分成一个列表
36
# 再通过map函数对列表中的每个字符串进行映射处理成小数
37
a, b, c = map(float, input('请输入三条边: ').split())
38
# 先判断给定长度的三条边能否构成三角形
39
# 如果能才创建三角形对象
40
if Triangle.is_valid(a, b, c):
41
tri = Triangle(a, b, c)
42
print('周长:', tri.perimeter())
43
print('面积:', tri.area())
44
# 如果传入对象作为方法参数也可以通过类调用实例方法
45
# print('周长:', Triangle.perimeter(tri))
46
# print('面积:', Triangle.area(tri))
47
# 看看下面的代码就知道其实二者本质上是一致的
48
# print(type(tri.perimeter))
49
# print(type(Triangle.perimeter))
50
else:
51
print('不能构成三角形.')
52
53