본문 바로가기
Python/파이썬 300제

파이썬 300제 231~240 (파이썬 함수)

by Maccrey 2024. 6. 8.
반응형

231. 아래 코드를 실행한 결과를 예상하라.

def n_plus_1 (n) :
    result = n + 1

n_plus_1(3)
print (result)

-> 에러가 발생합니다.

NameError Traceback (most recent call last)
<ipython-input-2-78e20c8ecef0> in <module>()
3 
4 n_plus_1(3)
----> 5 print (result)
6

NameError: name 'result' is not defined

함수 내부에서 사용한 변수는 함수 밖에서는 접근이 불가능합니다. (문법이 그래요) 함수 내부에서 계산한 값을 전달하기 위해서는 return을 사용해야 합니다.

 

232. 문자열 하나를 입력받아 인터넷 주소를 반환하는 make_url 함수를 정의하라.

make_url("naver")
www.naver.com

->

def make_url(string) :
    url = "www." + string + ".com"
    return url

간단하므로 한줄로 표현할 수도 있습니다.

def make_url(string) :
    return "www." + string + ".com"

 

233. 문자열을 입력받아 각 문자들로 구성된 리스트로 반환하는 make_list 함수를 정의하라.

make_list("abcd")
['a', 'b', 'c', 'd']

-> 비어있는 리스트에 문자열을 하나씩 추가합니다. 이어서 리스트를 반환 (return) 합니다.

def make_list (string) :
    my_list = []
    for 변수 in string :
        my_list.append(변수)
    return my_list

문자열을 list로 형변환하면 쉽게 문제를 해결할 수 있습니다.

def make_list (string) :
    return list(string)

 

234. 숫자로 구성된 하나의 리스트를 입력받아, 짝수들을 추출하여 리스트로 반환하는 pickup_even 함수를 구현하라.

pickup_even([3, 4, 5, 6, 7, 8])
[4, 6, 8]

->

def pickup_even(items):
    result = []
    for item in items:
        if item % 2 == 0:
            result.append(item)
    return result

 

235. 콤마가 포함된 문자열 숫자를 입력받아 정수로 변환하는 convert_int 함수를 정의하라.

convert_int("1,234,567")
1234567

->

def convert_int (string) :
    return int(string.replace(',', ''))

 

236. 아래 코드의 실행 결과를 예측하라.

def 함수(num) :
    return num + 4

a = 함수(10)
b = 함수(a)
c = 함수(b)
print(c)

-> 4번 라인에서 함수로 10이 입력돼서 14가 반환됩니다. a 변수에는 14가 저장됩니다. 5번 라인에서 함수로 14가 입력돼서 18이 반환됩니다. 변수 b에는 18이 바인딩됩니다. 6번 라인에서 함수로 18가 입력돼서 22가 반환됩니다. 변수 c에는 22가 바인딩됩니다.

 

237. 아래 코드의 실행 결과를 예측하라.

def 함수(num) :
    return num + 4

c = 함수(함수(함수(10)))
print(c)

-> 함수가 여러번 중첩돼 있습니다. 안쪽 부터 차례로 해석하면 됩니다. 함수(10)의 결과 14, 함수(14) 결과 18, 함수(18) 결과 22 가 반환됩니다. 결국 36번과 동일한 코드를 축약해서 작성해 놓은 겁니다.

 

238. 아래 코드의 실행 결과를 예측하라.

def 함수1(num) :
    return num + 4

def 함수2(num) :
    return num * 10

a = 함수1(10)
c = 함수2(a)
print(c)

-> 7번 라인에서 함수1으로 10이 입력돼서 14가 반환됩니다. a 변수에는 14가 저장됩니다. 8번 라인에서 함수2로 a에 저장된 14가 입력돼서 140이 반환됩니다. 변수 c에는 140이 바인딩됩니다.

140

 

239 . 아래 코드의 실행 결과를 예측하라.

def 함수1(num) :
    return num + 4

def 함수2(num) :
    num = num + 2
    return 함수1(num)

c = 함수2(10)
print(c)

-> 8번 함수2가 호출됩니다. 4번 라인으로 파이썬 인터프리터는 이동하고 이때 num에는 10이 바인딩됩니다.

5번 라인 코드를 실행하면 num이 12로 업데이트 됩니다. 6번라인의 코드를 실행하려고 하는데, 함수1이 호출됩니다.

1번 라인의 함수 정의부로 이동하며 num 값은 12로 바인딩됩니다. 2번 라인의 코드가 실행돼서 16이 반환됩니다.

함수1의 동작을 끝마치고 함수 2의 6번 라인으로 돌아오고 함수2도 return을 만나면서 16을 반환합니다.

8번 라인으로 돌아와 c 변수에는 16을 바인딩합니다.

 

240. 아래 코드의 실행 결과를 예측하라.

def 함수0(num) :
    return num * 2

def 함수1(num) :
    return 함수0(num + 2)

def 함수2(num) :
    num = num + 10
    return 함수1(num)

c = 함수2(2)
print(c)

->

28
반응형