본문 바로가기
Python/PY4E

PY4E Chapter 4. Functions

by 전자여우 2022. 8. 2.

1. 함수

함수는 코드를 저장했다가 재사용하는 것이다. 크게 내장 함수(Built-in functions)와 사용자 정의 함수(User-defined function)로 나눌 수 있다.

 

2. 내장 함수(Built-in function)

Python에서 자체적으로 들어있어 별도의 등록 없이 사용할 수 있는 함수이다.

우리가 지금까지 사용해왔던 print(), input(), type(), float(), int() 등이 이에 해당한다.

고로 이에 대한 설명은 생략하겠다.

 

3. 사용자 정의 함수(User-defined function)

def 함수명(인자)으로 함수를 정의할 수 있다. 함수명은 변수명과 같이 프로그래머가 직접 명명해야 한다.

함수를 정의한다고 해서 그것이 바로 실행되지는 않으며, 호출(invoke)을 함으로써 비로소 실행이 된다.

함수를 호출할 시엔 함수명(매개변수)으로 호출하면 된다.

def greet(lang): # greet를 '함수명', lang을 '매개변수'라고 한다.
    if lang == 'es':
        print('Hola')
    elif lang == 'fr':
        print('Bonjour')
    else:
        print('Hello')
        
greet('fr') # 괄호 안에 들어있는 'fr'을 '인자'라고 한다. Bonjour이 출력된다.

return 명령어를 사용해서 특정 값을 출력하는 대신 반환하게 하거나 함수 호출을 종료할 수 있다.

print와 다른 점은 return으로 받은 결괏값은 출력되지 않으며, 계산 및 변형을 하거나 그것을 다른 함수에 집어넣을 수 있다는 점이다.

def greet():
    return 'Hello'
    
print(greet(), 'Fox') # Hello Fox가 출력된다.


def greet1()
    print('Hello')
    return # 함수 호출을 종료한다.
    print('There') # return 명령어로 인해 실행되지 않는다.

 

Assignment

Assignment 4.6은 전에 작성했던 급여 계산기를 함수 화하는 것이었다.

우선 computepay()라는 함수에 급여 계산을 하는 논리를 넣고 함수를 사용하여 계산을 해야 했으며, 함수는 값을 출력(print)이 아닌 반환(return) 해야 했다. 이전과 같이 hours와 rate에 각각 45, 10.50을 입력해야 했고, 급여는 498.75여야 했다. input()을 통해 받은 값에 float() 함수를 사용하여 유리수(float) 타입으로 변환해야 했으며, 원하는 출력과 일치하도록 print() 함수 또한 작성해야 했다.

달라진 점은 사용자가 숫자를 올바르게 입력한다고 가정하므로 사용자 입력값에 대한 오류 걱정은 하지 않아도 됐기 때문에 try/except 명령어를 사용할 필요가 없다는 것이었다.

나의 풀이는 아래와 같다.

# ex_04_06
def computepay(h, r):
    if int(h) > 40:
        h = 40 + (int(h) - 40) * 1.5
    return float(h) * float(r)

hrs = input("Enter Hours:")
rte = input("Enter rate:")
p = computepay(hrs, rte)
print("Pay", p)

'Python > PY4E' 카테고리의 다른 글

PY4E Chapter 6. Strings  (0) 2022.08.05
PY4E Chapter 5. Loops and Iterations  (0) 2022.08.05
PY4E Chapter 3. Conditional Execution  (0) 2022.08.02
PY4E Chapter 2. Variables, expressions and statements  (0) 2022.08.02
PY4E Chapter 1. Why Program  (0) 2022.08.01

댓글