핸드북 퀴즈 풀이 - python

손성수·2023년 3월 21일

알고리즘

목록 보기
2/10

mission2 코딩테스트 풀어보기!

나의 풀이 링크

함수와 메서드의차이

내가 생각한 답안

함수는 main?영역에서 사용되는 기능이며
메서드는 class 내부의 멤버 함수? 라고 생각했다.

답안

함수는 일반적으로 모듈 수준에서 정의되고 호출되는 코드블록
메소드는 클래스 내에서 정의되고, 해당 클래스의 인스턴스에서 호출되는 함수

객체 지향 프로그래밍에서 객체는 무엇이며, 파이썬에서 객체는 어떻게 만들어지나?

내가 생각한 답안

어.. ㅎㅎ;
객체지향형 프로그래밍은 OOP.. 객체는 class로부터 생성된 고유의 data..
게임의 몬스터로 치자면 이름은 같지만 각각의 고유한 특성을 가지고 있고
python 에서는 선언하는 인스턴스에 해당하는 class를 반환하여 생성하고
이때 init 메소드가 초기값을 매개변수로 받고 있다면 초기값을 줘야하며
만약 defualt 값을 받고 있다면 입력하지 않아도 시스템적인 오류가 발생하지 않는다.

답안

객체는 데이터와 해당 데이터를 조작하는 메소드를 포함하는 소프트웨어 개체입니다.
파이썬에서 객체는 클래스를 정의하고 이를 인스턴스화하여 생성합니다.

파이썬에서 함수의 매개변수에 디폴트 값을 설정하는 방법은?

내가 생각하는 답안

해당하는 매개변수 옆에 defualt를 반환한다.

답안

내가 생각하는게 정답이였다!

다음과 같은 코드에서 예상되는 출력은?

def square(x):
    return x * x

def apply(func, x):
    return func(x)

print(apply(square, 5))

내가 생각하는 답안.
25.

시스템 순서.
apply 함수 호출
이때, apply 함수는 매개변수로 함수와 , 정수를 받고 있다.
아무런 동작 없이 return을 통해 값을 반환하는데
이때, 매개변수로 받은 함수에 매개 변수(정수)를 참고하여 호출한다.
호출받은 함수는 square이며, 곱한 값을 반환한다.
square 함수에서 apply 함수로 다시 돌아와서
더이상 수식은 없으므로, apply 함수도 반환받은 값을 유지한채 자신을 호출한
원래 위치로 값을 지닌채 복귀한다.
print(25)

답안

내가 생각한게 정답!
재귀함수를 떠올리게 하는 문제였다.

밑의 클래스를 정의했다고 가정하고 이 클래스를 통하여 객체를 생성하고, 너비와 높이를 5와 10으로 설정, 넓이와 둘레를 출력하는 코드를 작성해보세요

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

    def around(self):
        return 2 * (self.width + self.height)

내가 풀이한 정답

r1 = Rectangle(5,10)
print(f"넓이 = {r1.area()}, 둘레 = {r1.around()}")

답안

내가 생각한 답안이 정답 잉ㅇㅇㅇㅇㅇㅇ

다음 코드의 결과값은?

def my_func(a, b, c):
    print(a, b, c)


my_list = [1, 2, 3]

my_func(*my_list)

내가 생각한 답안

언패킹 문제다. 리스트를 하나하나 풀어가며 my_func 함수의 매개변수로 참조하니.
출력은 123이다.

답안

나의 풀이가 정답.

try~ except

try:
    x = int(input("나눌 수를 입력하세요: "))
    y = 100 / x
except 영은안됨:
    # 0으로 나누려고 할 때 예외 처리
except 숫자가아님:
    # 숫자가 아닌 값을 입력했을 때 예외 처리
else:
    # 나눗셈 결과 출력

나의풀이

    x = int(input("나눌 수를 입력하세요: "))
    y = 100 / x
except ZeroDivisionError:
    print("0으로 나눌 수 없습니도")
except TypeError:
    print("정수를 입력해야 합니도")
else:
    print(y)
    ```
오류!

다시 풀은 나의 풀이

TypeError가 굉장히 햇갈렸는데, TypeError가 아닌 ValueError다.

except ValueError:
    print("정수를 입력해야 합니도")

추가문제 .
try~ except의 마지막 구문, 왜 else를 사용할까?

나의 생각

except로 모든 예외 처리를 사용했을때, 심각한 오류가 발생했는데도 지나쳐 간다면
즉, 내가 제어할 줄 모르는 오류가 생겼을때, 복잡한 코드라면 오류를 찾기 힘들것이다.
따라서 except가 아닌 else를 사용한다.

튜터님의 답안

내가 생각한게 맞았으며, 추가적인 질문을 드렸는데
실무에서 프로그램이 종료되지 않게 except를 사용하나요? 라고 질문을 드렸다.
정답은, 실무에서는 모든 경우의 수를 따지며,
실무에서 오류가 생긴다 할지라도 프로그램은 종료되지 않고,
때문에 내가 생각하지 못한 경우의 수는 알 수 없다
그렇기에 좀더 치밀하고, 경우의수 하나 하나 모든것을 파악하는 넓은
관점에서 바라보는것이 중요할 것 같다.

profile
더 노력하겠습니다

0개의 댓글