새소식

인기 검색어

개인공부/Python

python 심사문제 UNIT(36 ~ 37)

  • -

36.8 연습문제: 리스트에 기능 추가하기

다음 소스 코드에서 리스트(list)에 replace 메서드를 추가한 AdvancedList 클래스를 작성하세요. AdvancedList list를 상속받아서 만들고, replace 메서드는 리스트에서 특정 값으로 된 요소를 찾아서 다른 값으로 바꾸도록 만드세요.

class AdvancedList(list):
    def replace(self, old, new):
        for i in self:
            if i == old:
                self[self.index(old)] = new


x = AdvancedList([1, 2, 3, 1, 2, 3, 1, 2, 3])
x.replace(1, 100)
print(x)

 

36.9 심사문제: 다중 상속 사용하기

다음 소스 코드에서 동물 클래스 Animal과 날개 클래스 Wing을 상속받아 새 클래스 Bird를 작성하여 '먹다', '파닥거리다', '날다', True, True가 각 줄에 출력되게 만드세요.

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.flap()
b.fly()
print(issubclass(Bird, Animal))
print(issubclass(Bird, Wing))

# 먹다
# 파닥거리다
# 날다
# True
# True

37.3 심사문제: 두 점 사이의 거리 구하기

표준 입력으로 x, y 좌표 4개가 입력되어 Point2D 클래스의 인스턴스 리스트에 저장됩니다. 여기서 점 4개는 첫 번째 점부터 마지막 점까지 순서대로 이어져 있습니다. 다음 소스 코드를 완성하여 첫 번째 점부터 마지막 점까지 연결된 선의 길이가 출력되게 만드세요.

import math


class Point2D:
    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y


length = 0.0
p = [Point2D(), Point2D(), Point2D(), Point2D()]
p[0].x, p[0].y, p[1].x, p[1].y, p[2].x, p[2].y, p[3].x, p[3].y = map(int, input().split())

for i in range(len(p) - 1):
    length += math.sqrt((p[i + +1].x - p[i].x) ** 2 + ((p[i + 1].y - p[i].y) ** 2))
print(length)

 

'개인공부 > Python' 카테고리의 다른 글

데코레이터 사용하기  (0) 2022.08.01
코루틴 사용하기  (0) 2022.08.01
클래스 상속 사용하기  (0) 2022.08.01
람다 표현식으로 함수 만들기  (0) 2022.07.29
함수 사용하기  (0) 2022.07.28
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.