Practice 2 : 함수 1

abs() 직접 구현하기

절댓값은 숫자형 자료(int, float)가 들어오면 절댓값을 반환하고, 복소수형 자료(complex)가 들어오면 해당하는 자료의 크기를 반환합니다.

파이썬 내장 함수 abs()를 직접 구현한 my_abs()를 작성하시오.


공식문서

abs(x): 숫자의 절댓값을 돌려줍니다. 인자는 정수 또는 실수입니다. 인자가 복소수면 크기가 반환됩니다.

복소수 크기 구하는법

절댓값

실수의 절댓값은 부호를 무시한, 음이 아닌 해당 값입니다. 실수 값 a의 경우, 절댓값은 다음과 같습니다.

  • a가 0보다 크거나 같은 경우 a

  • a가 0보다 작은 경우 -a

abs(-0)은 0을 반환합니다.

복소수 크기

복소수 크기 (또는 절댓값)는 복소 평면에 플로팅된 원점에서 복소수 값 까지의 벡터 길이입니다. 복소수 값의 경우 \(|a + bi|\)\(\sqrt{a^2 + b^2}\)으로 정의됩니다.

예시)

my_abs(3+4j) #=> 5.0
my_abs(-0.0) #=> 0.0
my_abs(-5) #=> 5
# 아래에 코드를 작성하시오.

def my_abs(x):
    if type(x) == complex:
        return (x.real**2 + x.imag**2) ** (1/2)
    elif x <= 0:
        return -x
    else:
        return x
# 아래의 코드를 실행하여 출력된 결과를 확인하시오.

print(my_abs(3+4j))
print(my_abs(-0.0))
print(my_abs(-5))
print(abs(3+4j), abs(-0.0), abs(-5))
5.0
0.0
5
5.0 0.0 5

all() 직접 구현하기

all()은 인자로 받는 iterable(range, list)의 모든 요소가 참이거나 비어있으면 True를 반환합니다.

파이썬 내장 함수 all()을 직접 구현한 my_all()을 작성하시오.

예시)

my_all([]) #=> True
my_all([1, 2, 5, '6']) #=> True
my_all([[], 2, 5, '6']) #=> False
# 아래에 코드를 작성하시오.

def my_all(elements):
    for element in elements:
        if not element:
            return False
    return True
# 다음 코드를 다이어트 해봅시다.

def my_all(elements):
    # 요소가 있다면
    if elements:
        # 모든 요소에 대하여
        for element in elements:
            # 하나라도 bool(요소)의 결과가 False라면, False를 리턴
            if bool(element):
                continue
            else:
                return False
        else:
            return True
    
    # 요소가 없다면, True를 리턴
    else:
        return True
# Short Ver.

def my_all(elements):
    for element in elements:
        if not bool(element):
            return False
    return True
# 아래의 코드를 실행하여 출력된 결과를 확인하시오.

print(my_all([]))
print(my_all([1, 2, 5, '6']))
print(my_all([[], 2, 5, '6']))
print(all([]), all([1, 2, 5, '6']), all([[], 2, 5, '6']))
True
True
False
True True False

any() 직접 구현하기

any()는 인자로 받는 iterable(range, list)의 요소 중 하나라도 참이면 True를 반환하고, 비어있으면 False를 반환합니다.

파이썬 내장 함수 any()을 직접 구현한 my_any() 함수를 작성하시오.

예시)

my_any([1, 2, 5, '6']) #=> True
my_any([[], 2, 5, '6']) #=> True
my_any([0]) #=> False
# 아래에 코드를 작성하시오.

def my_any(elements):
    for element in elements:
        if element:
            return True
    return False
print(my_any([1, 2, 5, '6']))
print(my_any([[], 2, 5, '6']))
print(my_any([0]))
print(any([1, 2, 5, '6']), any([[], 2, 5, '6']), any([0])) # any[0] 오타
True
True
False
True True False