Repository navigation
Expand file tree
/
Copy pathfigure.py
More file actions
151 lines (120 loc) · 4.08 KB
/
Copy pathfigure.py
File metadata and controls
151 lines (120 loc) · 4.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
'''
figure 모듈
이 모듈은 Line 클래스와 여러 도형의 넓이를 계산하는 함수를 제공합니다.
클래스:
- Line: 선의 길이를 나타내는 클래스.
함수:
- area_square(line_obj): 정사각형의 넓이를 계산합니다.
- area_circle(line_obj): 원의 넓이를 계산합니다.
- area_regular_triangle(line_obj): 정삼각형의 넓이를 계산합니다.
'''
import math
class Line:
"""Line 클래스
속성
----
__length : 선의 길이 (기본값: 1).
외부에서 접근 불가능한 필드.
메소드
------
__init__(length=1): Line 객체를 초기화합니다.
유효하지 않은 값이 주어지면 기본값 1로 초기화됩니다.
set_length(length): __length 필드를 설정합니다.
유효하지 않은 값이 주어지면 변경되지 않습니다.
get_length(): __length 필드를 반환합니다.
"""
__length = 1
def __init__(self, length = 1):
"""객체를 초기화합니다.
Parameters
----------
length : int or float, optional (Default: 1).
Returns
-------
No returns.
Example
-------
>>> myline = figure.Line(10) # 길이를 10으로 설정한다.
"""
if (type(length) != int and type(length) != float) or (length <= 0):
self.__length = 1
else:
self.__length = length
def set_length(self, length):
"""선의 길이를 설정합니다.
Parameters
----------
length : int or float, must be positive.
Returns
-------
No returns.
Example
-------
>>> myline.set_length(10) # 길이를 10으로 설정한다.
"""
if not ((type(length) != int and type(length) != float) or (length <= 0)):
self.__length = length
def get_length(self):
"""선의 길이를 반환합니다.
Parameters
----------
No parameters.
Returns
-------
length: 현재 선의 길이.
Example
-------
>> myline.get_length() # 다른 값을 변경하지 않으면 Default 값인 1을 반환한다.
"""
return self.__length
def area_square(line_obj):
"""주어진 Line 객체의 길이를 한 변으로 하는 정사각형의 넓이를 계산합니다.
Parameters
----------
line_obj : Line
Line 클래스의 객체.
Returns
-------
정사각형의 넓이. 유효하지 않은 Line 객체가 주어지면 0을 반환합니다.
Example
-------
>>> print(area_square(myline)) # length가 10일 때 100을 반환한다.
"""
if isinstance(line_obj, Line):
return line_obj.get_length() ** 2
else:
return 0
def area_circle(line_obj):
"""주어진 Line 객체의 길이를 반지름으로 하는 원의 넓이를 계산합니다.
Parameters
----------
line_obj : Line
Line 클래스의 객체.
Returns
-------
원의 넓이. 유효하지 않은 Line 객체가 주어지면 0을 반환합니다.
Example
-------
>>> print(area_circle(myline)) # length가 10일 때 314.1592653589793을 반환한다.
"""
if isinstance(line_obj, Line):
return (line_obj.get_length() ** 2) * math.pi
else:
return 0
def area_regular_triangle(line_obj):
"""주어진 Line 객체의 길이를 한 변으로 하는 정삼각형의 넓이를 계산합니다.
Parameters
----------
line_obj : Line
Line 클래스의 객체.
Returns
-------
정삼각형의 넓이. 유효하지 않은 Line 객체가 주어지면 0을 반환합니다.
Example
-------
>>> print(area_regular_triangle(myline)) # length가 10일 때 43.30127018922193을 리턴한다.
"""
if isinstance(line_obj, Line):
return (math.sqrt(3) * (line_obj.get_length() ** 2)) / 4
else:
return 0