[python] 평균 구하는 클래스
Average 클래스는 평균을 구한다.
init_data 로 첫 데이터를 받고 length 는 평균을 구할 데이터의 최대 길이이다.
add() 를 통해 추가 적으로 데이터가 들어오면 계산 할 수 있고
초기값에 설정한 length 를 넘어가면 리스트의 데이터를 pop 하여(최근 데이터 삭제) 길이를 맞춘다.
class Average(object):
def __init__(self, init_data: list, length: int = 10):
self.length = length
self.data = init_data
self.avg = 0
self._cal_avg()
def _cal_avg(self):
if len(self.data) == 0:
self.avg = 0
else:
self.avg = sum(self.data) / len(self.data)
def add(self, data):
if len(self.data) >= self.length:
self.data.pop(0)
self.data.append(data)
self._cal_avg()
def __str__(self) -> str:
return f"avg = {self.avg}, data = {self.data}"
if __name__ == "__main__":
data = [1, 2, 3]
average = Average(data, 5)
print(average)
average.add(4)
print(average)
average.add(5)
print(average)
average.add(6)
print(average)
average.add(7)
print(average)
average.add(8)
print(average)
average.add(9)
print(average)
추가로 str 메서드는 print 를 하였을때 표시되는 스트링으로
평균값과 data 값이 어떤게 있는지 쉽게 볼 수 있도록 하였다.
avg = 2.0, data = [1, 2, 3]
avg = 2.5, data = [1, 2, 3, 4]
avg = 3.0, data = [1, 2, 3, 4, 5]
avg = 4.0, data = [2, 3, 4, 5, 6]
avg = 5.0, data = [3, 4, 5, 6, 7]
avg = 6.0, data = [4, 5, 6, 7, 8]
avg = 7.0, data = [5, 6, 7, 8, 9]
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Upvoted! Thank you for supporting witness @jswit.