Training

training3.py 파일에 아래에 예제들에서 설명되는 함수들을 정의하라.

예제 1

인자로 x 라디안(호도, radian)을 입력받아 각도(degree)로 계산하여 되돌려주는 함수 degree(x)를 정의하라.

`degree(x) = (x * 360) / (2 * pi)`

여기서 pi는 원주율을 나타내며, 라디안(호오) 설명은 아래 사이트 참조.

https://namu.wiki/w/%EB%9D%BC%EB%94%94%EC%95%88

활용 예:

In [ ]: degree(math.pi)
Out[ ]: 180.0

In [1]:
import math # math 모듈을 임포트해야 pi 값을 사용할 수 있다.

def degree(x):
    return (x *360.0) / (2 * math.pi)

degree(math.pi)


Out[1]:
180.0

예제 2

리스트 자료형 xs를 입력받아 리스트 내의 값들의 최소값 xmin과 최대값 xmax 계산하여 순서쌍 (xmin, xmax) 형태로 되돌려주는 함수 min_max(xs)를 정의하라.

활용 예:

In [ ]: min_max([0, 1, 2, 10, -5, 3])
Out[ ]: (-5, 10)

In [2]:
def min_max(xs):
    return (min(xs), max(xs))

# 튜플을 이용하여 최소값과 최대값을 쌍으로 묶어 리턴하였다.
# 따라서 리턴값을 쪼개어 사용할 수도 있다.

a, b = min_max([0, 1, 2, 10, -5, 3])
a


Out[2]:
-5

minmax 함수는 모든 시퀀스 자료형에 활용할 수 있는 함수들이다.


In [3]:
min((1, 20))


Out[3]:
1

파이썬에서 다루는 모든 값과 문자들을 비교할 수 있다. 많은 예제들을 테스하면서 순서에 대한 감을 익힐 필요가 있다.


In [4]:
max("abcABC + $")


Out[4]:
'c'

In [5]:
min("abcABC + $")


Out[5]:
' '

In [6]:
max([1, 1.0, [1], (1.0), [[1]]])


Out[6]:
[[1]]

In [7]:
min([1, 1.0, [1], (1.0), [[1]]])


Out[7]:
1

예제 3

리스트 자료형 xs를 입력받아 리스트 내의 값들의 기하평균을 되돌려주는 함수 geometric_mean(xs)를 정의하라. 기하평균에 대한 설명은 아래 사이트 참조할 것.

https://ko.wikipedia.org/wiki/%EA%B8%B0%ED%95%98_%ED%8F%89%EA%B7%A0

활용 예:

In [ ]: geometric_mean([1, 2])
Out[ ]: 1.4142135623730951

In [8]:
def geometric_mean(xs):
    g = 1.0
    for m in xs:
        g = g * m
    return g ** (1.0/len(xs))

geometric_mean([1,2])


Out[8]:
1.4142135623730951

연습문제

아래 연습문제들에서 사용되는 함수들을 lab3.py 파일로 저장하라.

연습문제 1

다음 조건을 만족시키는 함수 swing_time(L) 함수를 정의하라.

길이가 L인 진자(pendulum)가 한 번 왔다갔다 하는 데에 걸리는 시간(주기, 초단위)을 계산하여 되돌려 준다. 진자와 주기 관련해서 아래 사이트 참조.

https://ko.wikipedia.org/wiki/%EC%A7%84%EC%9E%90

활용 예:

In [ ]: swing_time(1)
Out[ ]: 2.0060666807106475

In [9]:
g = 9.81

def swing_time(L):
    return 2 * math.pi * math.sqrt(L / g)

swing_time(1)


Out[9]:
2.0060666807106475

연습문제 2

음수가 아닌 정수 n을 입력 받아 아래 형태의 리스트를 되돌려주는 range_squared(n) 함수를 정의하라.

[0, 1, 4, 9, 16, 25, ..., (n-1)** 2]

n=0인 경우에는 비어있는 리스트를 리턴한다.

활용 예:

In [ ]: range_squared(3)
Out[ ]: [0, 1, 4]

In [10]:
def range_squared(n):
    L = []
    for index in range(n):
        L.append(index ** 2)
    return L

range_squared(3)


Out[10]:
[0, 1, 4]

연습문제 3

시퀀스 자료형 seq가 주어졌을 때 element 라는 값이 seq에 몇 번 나타나는지를 알려주는 함수 count(element, seq)를 정의하라.

활용 예:

In [ ]: count('dog',['dog', 'cat', 'mouse', 'dog'])
Out[ ]: 2

In [ ]: count(2, range(5))
Out[ ]: 1

In [11]:
def count(element, seq):
    return seq.count(element)

count(2, range(5))


Out[11]:
1