티스토리 뷰

2019/11/10 - [Python/심사문제] - 파이썬 도장 심사문제(Unit 44) 풀이(judge_import.py)

 

파이썬 도장 심사문제(Unit 44) 풀이(judge_import.py)

문제 표준 입력으로 원의 반지름(실수)이 입력됩니다. 입력된 반지름을 이용하여 원의 넓이를 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다). 원의 넓이는 반지름 * 반지름 * 원..

editor752.tistory.com

문제

표준 입력으로 정수가 입력됩니다. 주어진 calcpkg 패키지를 활용하여 입력된 정수의 제곱근과 입력된 정수를 반지름으로 하는 원의 넓이가 출력되게 만드세요. 제곱근은 calcpkg 패키지에서 operation 모듈의 squareroot 함수를 사용하고, 원의 넓이는 calcpkg 패키지에서 geometry 모듈의 circle_area 함수를 사용하세요(calcpkg 패키지를 사용하지 않고 계산하면 결과가 맞더라도 틀린 것으로 처리됩니다. 반드시 calcpkg 패키지를 사용하세요).

calcpkg/init.py

내용이 비어 있음

 

calcpkg/operation.py

1
2
3
4
import math
 
def squareroot(n):
return math.sqrt(n)
cs

 

calcpkg/geometry.py

1
2
3
4
import math
 
def circle_area(radius):
return radius * radius * math.pi
cs

 

입력-출력 예시

표준 입력

2

표준 출력

1.4142135623730951
12.566370614359172

해설

하위 패키지에 있는 메서드를 어떻게 import할 것인가와 import한 함수를 어떻세 사용할 것일가 두 부분에 초점이 있다.

하위 패키지의 함수를 어떻게 import할 것인가

  1. import 패키지.모듈를 이용한다.

    1
    2
    import calcpkg.operation
    import calcpkg.geometry
    cs
  2. 1번과 같이 import할 경우 해당 함수를 사용할 때 반드시 ’패키지.모듈’명이 접두해야 한다. 귀찮은 일이라 from import as를 이용한다. 그러면 as로 지정한 이름만으로 함수를 사용할 수 있다.

    1
    2
    from calcpkg.operation import squareroot as root
    from calcpkg.geometry import circle_area as area
    cs

불러온 함수를 어떻게 사용할 것인가

  1. 위 1의 방식을 사용했다면 함수를 호출할 때마다 ’패키지.모듈’명을 접두해야 한다.

    1
    2
    from calcpkg.operation import squareroot as root
    from calcpkg.geometry import circle_area as area
    cs
  2. 위 2의 방식을 사용했다면 지점한 이름으로 함수를 호출하면 된다.

    1
    2
    print(root(num))
    print(area(num))
    cs

문제를 풀 때는 단순히 타이핑 횟수를 줄일 수 있다는 점에서 이게 나은 방법이겠다고 생각했다. 하지만 개인 개발이 아니라면 패키지에 지정된 이름을 쓰는 것이 코드의 공유에 더 유리할 것으로 보인다. 특히 공개 패키지를 이용하는 경우 함수에 별도의 이름을 붙이면 불필요한 혼란을 야기할 수도 있겠다.

소스코드

1
2
3
4
5
6
from calcpkg.operation import squareroot as root
from calcpkg.geometry import circle_area as area
 
num = int(input())
print(root(num))
print(area(num))
cs

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함
05-18 17:43