Python
함수 사용
haventmetyou
2023. 10. 16. 12:33
함수는 def에 함수 이름을 지정하고 ()(괄호)와 :(콜론)을 붙인 뒤 다음 줄에 원하는 코드를 작성
> 반드시 들여쓰기
def는 정의하다의 define
함수 작성 및 호출
def hello():
print('Hello, world!')
hello()
함수 결과 반환
def add(a, b):
"""이 함수는..."""
return a + b
x = add(10, 20)
print(x)
print(add.__doc__)
add 함수에 "(큰따옴표) 세 개로 독스트링(설명) 추가
> 함수를 호출해도 독스트링은 출력되지 않음
함수의 __doc__으로 독스트링 출력
def add(a, b):
result = a + b
return result
x = add(10, 20)
print(x)
# 출력 값 30
def add():
return 'hello'
x = add()
print(x)
# 출력 값 hello
>>> def not_ten(a):
... if a == 10:
... return # 변수 a 값이 10이면 반환(빈값)
... print(a, '입니다.', sep='')
...
>>> not_ten(5)
5입니다.
>>> not_ten(10)
>>>
return으로 함수 중간에서 빠져나오기
함수에서 값을 여러 개 반환
def add_sub(a, b):
return a + b, a - b
x, y = add_sub(10, 20)
print(x)
print(y)
z = add_sub(100, 200)
print(z)
# 출력 값
30
-10
(300, -100)
return으로 값을 여러 개 반환하면 튜플이 반환됨
결과를 변수 한 개에 저장해 출력해 보면 튜플이 반환
함수에서 값 여러 개 직접 반환
def one_two():
return 10, 20
x, y = one_two()
print(x, y)
# 출력 값
10 20
def one_two():
return (1, 2)
x, y = one_two()
print(x, y)
# 출력 값
1 2
여러 개를 직접 반환할 때는 return에 튜플을 지정
괄호 없이 콤마로 구분하면 튜플이 되므로 튜플 1, 2는 튜플 (1, 2)와 같다
return 1, 2도 return (1, 2)와 같음
리스트도 직접 반환해도 됨 / 여러 개 저장 가능
함수의 호출 과정
def mul(a, b):
c = a * b
return c
def add(a, b):
c = a + b
print(c)
d = mul(a, b)
print(d)
x = 10
y = 20
add(x, y)
# 출력 값
30
200
연습 문제 예제
29.7번 연습 문제: 몫과 나머지를 구하는 함수 만들기
x = 10
y = 3
def get_quotient_remainder(a, b):
return a // b, a % b
quotient, remainder = get_quotient_remainder(x, y)
print( '몫: {0}, 나머지: {1}'.format(quotient, remainder) )
# 실행 결과
몫: 3, 나머지: 1
# 29.8번 심사 문제: 사칙 연산 함수 만들기
# 표준 입력으로 숫자 두 개가 입력됩니다. 다음 소스 코드를 완성하여 두 숫자의 덧셈, 뺄셈, 곱셈, 나눗셈의 결과가 출력되게 만드세요.
# 이때 나눗셈의 결과는 실수라야 합니다.
x, y = map( int, input().split() )
def clac(x, y):
return x + y, x - y, x * y, x / y
a, s, m, d = clac(x, y)
print( '덧셈: {0}, 뺄셈: {1}, 곱셈: {2}, 나눗셈: {3}'.format(a, s, m, d) )
# 표준 입력
10 20
# 실행 결과
덧셈: 30, 뺄셈: -10, 곱셈: 200, 나눗셈: 0.5
# 표준 입력
40 8
# 실행 결과
덧셈: 48, 뺄셈: 32, 곱셈: 320, 나눗셈: 5.0
연습 문제 예제 2
# 다음과 같이 표현되도록 코드를 작성하시오.
# 덧셈 1, 뺄셈 2, 곱셈 3, 나눗셈 4: 1
# 첫 번째 값을 입력: 10
# 두 번째 값을 입력: 20
# ----------------------
# 입력 값: 10, 20
# 결과 값: 10 + 20 = 30
# ----------------------
choice = int(input('덧셈 1, 뺄셈 2, 곱셈 3, 나눗셈 4: '))
x = int(input('첫 번째 값을 입력: '))
y = int(input('두 번째 값을 입력: '))
print()
print('----------------------')
def clac(x, y):
print('입력 값:', x, ',', y)
if choice == 1:
result = x + y
return print('결과 값: {0} + {1} = {2}'.format(x, y, x + y))
elif choice == 2:
result = x - y
return print('결과 값: {0} - {1} = {2}'.format(x, y, x - y))
elif choice == 3:
result = x * y
return print('결과 값: {0} x {1} = {2}'.format(x, y, x * y))
elif choice == 4:
result = x / y
return print('결과 값: {0} ÷ {1} = {2}'.format(x, y, x / y))
else:
pass
return result
clac(x, y)
print('----------------------')
# 실행 결과
덧셈 1, 뺄셈 2, 곱셈 3, 나눗셈 4: 1
첫 번째 값을 입력: 10
두 번째 값을 입력: 20
----------------------
입력 값: 10 , 20
결과 값: 10 + 20 = 30
----------------------