본문 바로가기

프로그램언어/파이썬

7강 함수

함수란? 특별한 목적을 수행하기 위해 독립적으로 설계된 소스코드들의 집합이라고 말합니다.

 

함수 만들기

def는 함수를 만들 때 사용하는 예약어로 def 뒤에 함수이름을 정의하여 함수를 만들수 있습니다. 함수 이름뒤에 ":"을 입력하고 다음 줄부터 들여쓰기를 하여 소스코드를 작성하면 됩니다.

def 함수명(매개변수):

    문장1

    문장2

함수의 종류

함수1 (매개변수도 없고 반환값도 없는 함수) 함수2 (매개변수는 있고 반환값은 없는 함수)
def func():
    명령어 처리
def func(a):
    명령어 처리
함수3 (매개변수는 없고 반환값이 있는 함수) 함수4 (매개변수도 있고 반환값도 있는 함수)
def func():
    명령어 처리
    return 값
def func(a):
    명령어 처리
    return 값
함수5 (함수안에서 함수를 호출하는 재귀함수)  

함수1

## 함수 선언 부분

def func():

    for i in range(1, 11):

        print('%d' % i, end= ' ')

 

 ## 메인 코드 부분

print('함수호출')

func()

실행 결과
함수호출
1 2 3 4 5 6 7 8 9 10

함수2

## 함수 선언 부분

def func(a):

    for i in range(1, a+1):

         print('%d' % i, end= ' ')

 

 ## 메인 코드 부분

print('함수호출')

func(10)

실행 결과
함수호출
1 2 3 4 5 6 7 8 9 10

 

함수 3

## 함수 선언 부분

def func():
    s = 0

    for i in range(1, 11):

         s = s + i
    return s

 

 ## 메인 코드 부분

print('함수호출')

print('%d' % func())

실행 결과
함수호출
55

 

함수 4

## 함수 선언 부분

def func(a):
    s = 0

    for i in range(1, a + 1):

         s = s + i
    return s

 

 ## 메인 코드 부분

print('함수호출')

print('%d' % func(10))

실행 결과
함수호출
55

 

함수 5 (재귀함수)

## 함수 선언 부분

def func(a):
    if(a == 1)
        return 1
    else
        return a + func(a-1)

 

 ## 메인 코드 부분

print('함수호출')

print('%d' % func(5))

실행 결과
함수호출
15


5 + func(4)
        4 + func(3)
                 3 + func(2)
                         2 + func(1)
                                  1

 

 

예제]

커피 자판기이 프로그램을 만들어 보자

## 전역 변수 선언 부분

coffee = 0

 

## 함수 선언 부분

def coffee_machine(button) :

    print()

    print('#1.(자동으로) 뜨거운 물을 준비한다.');

    print('#2.(자동으로) 종이컵을 준비한다.');

 

    if button == 1:

        print('#3. (자동으로) 보통커피를 탄다.')

    elif button == 2:

        print('#3. (자동으로) 설탕커피를 탄다.')

    elif button == 3:

        print('#3. (자동으로) 블랙커피를 탄다.')

    else:

        print('#3. (자동으로) 아무거나 탄다.')

 

    print('#4.(자동으로) 물을 붓는다.');

    print('#5.(자동으로) 스푼으로 젓는다.');

    print()

 

## 메인 코드 부분

coffee = int(input('어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) '))

coffee_machine(coffee)

print('손님~커피 여기 있습니다.')

실행 결과

 

어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) 1

 

#1.(자동으로) 뜨거운 물을 준비한다.

#2.(자동으로) 종이컵을 준비한다.

#3. (자동으로) 보통커피를 탄다.

#4.(자동으로) 물을 붓는다.

#5.(자동으로) 스푼으로 젓는다.

 

손님~커피 여기 있습니다.

 

A, B, C손님이 커피를 주문하는 커피 자판기 프로그램을 만들어 보자.

## 전역 변수 선언 부분

coffee = 0

 

## 함수 선언 부분

def coffee_machine(button) :

print()

print('#1.(자동으로) 뜨거운 물을 준비한다.');

print('#2.(자동으로) 종이컵을 준비한다.');

 

if button == 1:

print('#3. (자동으로) 보통커피를 탄다.')

elif button == 2:

print('#3. (자동으로) 설탕커피를 탄다.')

elif button == 3:

print('#3. (자동으로) 블랙커피를 탄다.')

else:

print('#3. (자동으로) 아무거나 탄다.')

 

print('#4.(자동으로) 물을 붓는다.');

print('#5.(자동으로) 스푼으로 젓는다.');

print()

 

## 메인 코드 부분

coffee = int(input('A손님, 어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) '))

coffee_machine(coffee)

print('A손님~ 커피 여기 있습니다.')

 

coffee = int(input('B손님, 어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) '))

coffee_machine(coffee)

print('B손님~ 커피 여기 있습니다.')

 

coffee = int(input('C손님, 어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) '))

coffee_machine(coffee)

print('C손님~ 커피 여기 있습니다.')

A손님, 어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) 2

 

#1.(자동으로) 뜨거운 물을 준비한다.

#2.(자동으로) 종이컵을 준비한다.

#3. (자동으로) 설탕커피를 탄다.

#4.(자동으로) 물을 붓는다.

#5.(자동으로) 스푼으로 젓는다.

 

A손님~ 커피 여기 있습니다.

B손님, 어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) 1

 

#1.(자동으로) 뜨거운 물을 준비한다.

#2.(자동으로) 종이컵을 준비한다.

#3. (자동으로) 보통커피를 탄다.

#4.(자동으로) 물을 붓는다.

#5.(자동으로) 스푼으로 젓는다.

 

B손님~ 커피 여기 있습니다.

C손님, 어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) 3

 

#1.(자동으로) 뜨거운 물을 준비한다.

#2.(자동으로) 종이컵을 준비한다.

#3. (자동으로) 블랙커피를 탄다.

#4.(자동으로) 물을 붓는다.

#5.(자동으로) 스푼으로 젓는다.

 

C손님~ 커피 여기 있습니다.

 

두개의 정부를 입력받아서 합계를 반환하는 plus()함수를 만들어 보자.

## 함수 선언 부분

def plus(v1, v2):

result = 0

result = v1 + v2

return result

 

## 전역변수 선언

hap = 0

 

## 메인 코드 부분

hap = plus(100, 200)

print('100200plus() 함수 결과는 %d' % hap)

 

실행 결과

100200plus() 함수 결과는 300

 

두 숫자로 덧셈, 뺄셈, 곱셈, 나눗셉을 계산하는 함수를 만들어 보자.

## 함수 선언 부분

def calc(v1, v2, op):

    result = 0

    if op == '+':

        result = v1 + v2

    elif op == '-':

        result = v1 - v2

    elif op == '*':

        result = v1 * v2

    elif op == '/':

        result = v1 / v2

 

    return result

 

## 전역변수 선언

res = 0

 

## 메인 코드 부분

oper = input("계산을 입력하세요(+,-,*,/) : ")

var1 = int(input("첫 번째 숫자 입력 : "))

var2 = int(input("두 번째 숫자 입력 : "))

 

res = calc(var1, var2, oper)

 

print('계산기 : %d %s %d = %d' %(var1, oper, var2, res))

실행 결과

계산을 입력하세요(+,-,*,/) : +

첫 번째 숫자 입력 : 10

두 번째 숫자 입력 : 20

계산기 : 10 + 20 = 30

 

실행 결과

계산을 입력하세요(+,-,*,/) : *

첫 번째 숫자 입력 : 20

두 번째 숫자 입력 : 40

계산기 : 20 * 40 = 800

 

실행 결과

계산을 입력하세요(+,-,*,/) : /

첫 번째 숫자 입력 : 45

두 번째 숫자 입력 : 10

계산기 : 45 / 10 = 4

 

 

지역변수와 전역변수

 

지역변수는 함수안에서 선언된 변수를 지역변수라 한다.

전역변수는 함수밖에서 선언된 변수로 전역으로 사용할 수 있는 변수이고 Global 예약어로 선어된 변수도 전역변수이다.

 

## 함수 선언 부분 ##

def func1() :

    a = 10 # 지역 변수

    print("func1()에서 a%d" % a)

 

def func2() :

    print("func2()에서 a%d" % a)

 

## 전역 변수 선언 부분 ##

a = 20 # 전역 변수

 

## 메인 코드 부분 ##

func1()

func2()

실행 결과

func1()에서 a10

func2()에서 a20

 

gloabal 예약어

global 변수를 만들면 함수안에서 만든 변수도 전역변수로 취급된다.

## 함수 선언 부분 ##

def func1() :

    global a # 이 함수 안에서 a는 전역 변수

    a = 10

    print("func1()에서 a%d" % a)

 

def func2() :

    print("func2()에서 a%d" % a)

 

## 함수 변수 선언 부분 ##

a = 20 # 전역 변수

 

## 메인 코드 부분 ##

func1()

func2()

실행 결과
func1()에서 a값 10
func2()에서 a값 10

 

'프로그램언어 > 파이썬' 카테고리의 다른 글

파이썬 가상환경 만들기  (0) 2023.03.28
스택  (0) 2021.06.29
5강 딕셔너리  (0) 2020.07.15
4강 튜플  (0) 2020.07.14
3강 리스트  (0) 2020.06.18