[python] 평균 구하는 클래스steemCreated with Sketch.

in kr-dev 커뮤니티2 years ago

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]

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.