분류 전체보기
-
37.2 연습문제: 사각형의 넓이 구하기코딩도장 심사문제모음 2020. 11. 12. 21:18
다음 소스 코드를 완성하여 사각형의 넓이가 출력되게 만드세요. 풀이 class Rectangle: def __init__(self, x1, y1, x2, y2): self.x1 = x1 self.y1 = y1 self.x2 = x2 self.y2 = y2 rect = Rectangle(x1=20, y1=20, x2=40, y2=30) a = rect.x2 - rect.x1 # abs를 써 절대값으로 만들어주는것으로 하자 b = rect.y2 - rect.y1 area = a * b print(a) # 20 print(b) # 10 print(area) # 200
-
TIL.35 두점 사이의 거리 구하기TIL 2020. 11. 12. 20:47
## 두점 사이 거리 구하기 ## 클래스를 이용하여 2차원 평면의 x, y 점을 구현하고 이 두 점 사이의 거리를 구해보자. class Point2D: def __init__(self, x, y): self.x = x self.y = y p1 = Point2D(30, 20) p2 = Point2D(60, 50) print('p1 {} {}'.format(p1.x, p1.y)) # p1 30 20 print('p2 {} {}'.format(p2.x, p2.y)) # p2 60 50 ## 아래 p1 과 p2를 2차원 평면상에 표현하면 아래와 같다. ## 두점 사이의 거리를 구하기 위해선 피타고라스의 정의를 이용한다. # a2 + b2 = c2 ## 따라서, a 와 b 의 길이를 구해야한다. a = p2.x ..
-
36.9 심사문제: 다중 상속 사용하기코딩도장 심사문제모음 2020. 11. 11. 16:27
다음 소스 코드에서 동물 클래스 Animal과 날개 클래스 Wing을 상속받아 새 클래스 Bird를 작성하여 '먹다', '파닥거리다', '날다', True, True가 각 줄에 출력되게 만드세요. 사용한코드 1. class 2. def 3. print 첫 접근 방법 그냥 다중 속성을 사용하여 Bird라는 클래스에 두 기반 클래스를 사용하면 되는 문제이다. 심화문제가 연습문제보다 쉬웠다. 이번은 풀이없이 넘어가도록 하겠다. 풀이 class Animal: def eat(self): print('먹다') class Wing: def flap(self): print('파닥거리다') class Bird(Animal, Wing): def fly(self): print('날다') b = Bird() b.eat() b..
-
TIL.34 클래스 상속(오버라이딩 및 추상클래스)TIL 2020. 11. 11. 15:37
## 클래스상속하기_2 ## 메서드 오버라이딩(method overriding) ## 메서드 오버라이딩 == 파생 클래스 안에서 기반 클래스의 메서드를 새로 정의하는 방법이다. class Person: def greeting(self): print('안녕하세요.') class Student(Person): def greeting(self): print('안녕하세요. 저는 파이썬 코딩 도장 학생입니다.') james = Student() james.greeting() # '안녕하세요. 저는 파이썬 코딩 도장 학생입니다.' # 안녕하세요가 아닌 안녕하세요. 저는 파이썬 코딩 도장 학생입니다가 출력되었다. ## 오버라이딩(overriding)은 무시하다, 우선하다라는 뜻을 가지고 있는데 말 그대로 기반 클래스..
-
36.8 연습문제: 리스트에 기능 추가하기코딩도장 심사문제모음 2020. 11. 11. 00:26
다음 소스 코드에서 리스트(list)에 replace 메서드를 추가한 AdvancedList 클래스를 작성하세요. AdvancedList는 list를 상속받아서 만들고, replace 메서드는 리스트에서 특정 값으로 된 요소를 찾아서 다른 값으로 바꾸도록 만드세요. 풀이.1 class AdvancedList(list): def replace (self, num1, num2): # self 는 x라는 인스턴스 자기 자신이다. for i in range(len(self)): if self[i] == num1 : self[i] = num2 x = AdvancedList([1, 2, 3, 1, 2, 3, 1, 2, 3]) x.replace(1, 100) print(x) # [100, 2, 3, 100, 2, 3..
-
TIL.33 클래스 상속(기반 클래스 및 파생클래스)TIL 2020. 11. 10. 20:51
## 클래스 상속하기 ## 클래스 상속(inheritance) ## 상속이란 무언가를 물려준다는 뜻으로 클래스 상속은 기반 클래스(base class)에서 상속을 받아 새롭게 만드는 클래스를 파생 클래스(derived class)라 한다. ## 클래스 상속은 물려받은 기능을 유지한채로 다른 기능을 추가할 때 사용하는 기능이다. ## 보통 기반 클래스는 부모 클래스(parent class), 슈퍼 클래스(superclass)라고 부르고 ## 파생 클래스는 자식 클래스(child class), 서브 클래스(subclass)라고도 부른다. ## 클래스 상속은 기반 클래스의 기능을 그대로 활용하면서 다른 기능을 추가할때 사용하는데, # 그렇다면 왜 굳이 클래스를 새로 만들지 않고 클래스 상슥을 시켜 파생 클래스..
-
35.6 심사문제: 시간 클래스 만들기코딩도장 심사문제모음 2020. 11. 10. 00:34
표준 입력으로 시:분:초 형식의 시간이 입력됩니다. 다음 소스 코드에서 Time 클래스를 완성하여 시, 분, 초가 출력되게 만드세요. from_string은 문자열로 인스턴스를 만드는 메서드이며 is_time_valid는 문자열이 올바른 시간인지 검사하는 메서드입니다. 시간은 24시까지, 분은 59분까지, 초는 60초까지 있어야 합니다. 정답에 코드를 작성할 때는 class Time:에 맞춰서 들여쓰기를 해주세요. 사용한 코드 1. @classmethod (클래스 메서드) 2. map 3. int 4. ### cls ### 5. @staticmethod (정적 메서드) 6. and (비교 연산자) 첫 접근 방법 크게 2가지 메서드를 만들면 해결이 가능한 문제다 1. 문자열을 인스턴스로 만드는 메서드 (f..
-
35.5 연습문제: 날짜 클래스 만들기코딩도장 심사문제모음 2020. 11. 9. 22:53
다음 소스 코드에서 Date 클래스를 완성하세요. is_date_valid는 문자열이 올바른 날짜인지 검사하는 메서드입니다. 날짜에서 월은 12월까지 일은 31일까지 있어야 합니다. 풀이.1 인덱스 슬라이싱을 이용해 월, 일이 해당 범위 안에 들어오면 True를 반환한다. 여기서는 속성 및 인스턴스를 사용하지 않고, 결과만 구현하면 되고 클래스에 접근하지 않아도된다. 따라서 정적 메서드를 사용하였다. ## 정적 메서드에서는 if 사용후 else로 마무리 하지 않아도 정상동작 한다. class Date: @staticmethod def is_date_valid(time): if 1