FUNDAMENTAL | 8-3. Vector Class

20210916

오늘은 lms 하고 시간이 남아서 퍼실님이 오늘 즉석으로 만든 간단한 Vector Class 예제를 풀기로 했다.

물론 나한테는 간단한 문제는 아니었지만 ㅎ 나중에 돌아봤을 때는 부디 쉽다고 느끼길!!

오늘도 화이팅✨



Vector Class

# 벡터 클래스의 멤버 변수는 어떤 자료형으로 관리해야할까?
# 리스트

class Vector:
    vector = None
    
    def __init__(self, number_list, dtype):
        self.dtype = dtype
        self.vector = []
        # 퀴즈: 반복문과 조건문을 이용해서 number_list에 있는 원소가 dtype가 일치하면
        # self.vector에 집어넣고 아니면 에러를 반환합니다.
        # Hint: type() 함수를 활용합니다.
       
        # for index in range(len(number_list))
        # if(type(number_list[index])) != self.dtype)
        # 파이썬에서는 리스트, 딕셔너리에 접근할 때, 가능한 인덱스 접근을 안하는 것을 권장
        # for item in number_list:
        
        for i, item in enumerate(number_list):
            if type(item) != self.dtype:
                print(f"{i}번째 데이터 타입이 같지 않습니다.")
                raise ValueError
            else:
                self.vector.append(item)
                
            # 벡터간의 연산을 위해 메소드를 정의
            # 벡터에 원소를 더하고 빼는 기능을 구현
            
    def push(self, item):
        # type을 활용해서 입력 item의 종류를 검사해야 합니다.
        if type(item) == self.dtye:
            print(f"데이터 타입이 같지 않습니다.")
            raise ValueError
        else:
            self.vector.append(item)
    
    # 연산자 오버로딩 (+, -, *, /, %)
    # 연산자 오버로딩은 클래스의 인스턴스들끼리 수치적 연산이 가능하도록 합니다.
    def __add__(self, other):
        new_number_list = []
        
    # 반복문을 통해서 self.vector와 other,vector에 접근하고, 새로운 숫자리스트에
    # 합을 채워 넣어서 새로운 벡터 인스턴스를 반환해보세요
    
        for i in range(len(self.vector)):
            new_number = self. vector[i] + other.vector[i]
            new_number_list.append(new_number)            

        new_vec = Vector(new_number_list, self.dtype)
        return new_vec
    
vector1 = Vector([1, 1, 1], int)
vector2 = Vector([-1, -1, -1], int)
vec3 = vector1 + vector2

print(vector1.vector)
print(type(vector1))
print(vec3)

좋은 웹페이지 즐겨찾기