본문 바로가기

코딩 - 주피터 노트북 (파이썬)

[모두의 파이썬] Day 11, 12함수 정의 및 호출 /

함수를 정의하고, 호출하기

입력
def hello(): # Hello 함수를 정의한다
print("Hello Python!")
hello()
hello()
hello()

출력
Hello Python!
Hello Python!
Hello Python!

def (define) 명령어는 hello라는 함수를 '정의' 함.

def 함수이름(인자): # '인자'는 생략 가능
함수 내용
return 함수의 결괏값 # 없을 때에는 생략 가능

hell0() 라는 함수 사용 시, Hello Python!이 출력하도록 출력하도록 호출한다.
만약 상황에 맞게 여러가지 역할을 하도록 함수를 정의한다면?

**
입력**
def hello2(name):
print("Hello", name) # name 인자 + Hello 출력
hello2("강아") # 인자값으로 강아를 넣음
hello2("고냥")
**
출력**
Hello 강아
Hello 고냥

인자는 함수를 호출할 시 함수에게 알려주는 일종의 정보. hello2 함수는 name이라는 인자를 하나 사용하는 함수임.
**
결괏값이 있는 함수**
입력
def square(a): # a의 square값 (a^2) 구하는 함수
c = a * a
return c
def triangle(a, h): #밑변이 a이고, 높이가 h인 삼각형의 넒이를 구하는 함수
c = a * h / 2
return c
s1 = 4
s2 = square(s1) #s1(4)의 제곱을 구하는 함수를 호출하여, 그 결과를 s2에 저장
print(s1, s2)
print(triangle(3, 4))
출력
4 16
6.0

s1이 4라고 주어졌을 때, s2에서는 s1의 제곱을 계산한 값이 나왔으며,
print(s1, s2)에서 각각 4와 16으로 출력됨
print(triangle(3, 4))에서는 밑변이 3, 높이가 4인 삼각형의 넒이인 3 * 4 / 2 = 6

※ 인자에는 두 가지 종류가 있다
def square(n):
return n*n
print(square(3))

이 함수에서는 에서는 어떤 수를 변수(인자) n으로 지정하여 n의 제곱값으로 돌려주는 함수이며, 또한 square함수를 사용할 때의 3 또한 '인자' 이다.

n과 같이 함수에서 사용되는 값을 정의하는 인자를 '형식 인자' 또는 '매개변수' 라고 하며, 3과 같이 함수를 호출할 때에 실제로 사용되는 값을 '실 인자' 또는 '인자/인수' 라고 부른다.

함수는 '인자'를 사용해서 처리할 정보를 넘겨받을 수 있으며, 계산된 결과를 결괏값 (반환값) 으로 사용해서 다시 함수를 호출한 곳에 돌려줄 수도 있다.

==============================================================================

Day 12. 함수 응용하기
**
1부터 n까지의 합을 구하는 함수**
입력
def sum_func(n):
s = 0
for x in range(1, n+1): # 1, 2, 3... n까지 반복
s = s + x # 계산된 값에 x를 더해서 다시 s에 저장
return s # 결괏값 s

print(sum_func(10))
print(sum_func(100))

*출력
*

55
5050

def sum_func(n): sum_func 함수를 정의하고, 그 인자로 n을 지정
변수 s는 처음에 0으로 설정되었으며, 여기에 x 값을 더한 것을 다시 s에 저장함으로써 1씩 증가하였음. 10까지 증가.
**
1부터 n까지 곱을 구하는 함수**
**
입력**
def factorial(n): # 팩토리얼 함수 정의
fact = 1 # fact 시작값 1
for x in range(1, n+1): # 1부터 n까지 반복
fact = fact * x
return fact

print(factorial(5))
print(factorial(10))

출력
120
3628800

factorial 함수는 한 개의 인자 n을 지정하고, 1부터 n까지의 곱을 계산 후 다시 반환하는 함수.
**
다각형을 그리는 함수**
입력
import turtle as t
def polygon(n):
for x in range(n): # n번 반복
t.forward(50) # 거북이를 50 만큼 앞으로 이동
t.left(360/n) # 거북이를 360/n만큼 왼쪽으로 회전
polygon(3)
출력

import turtle as t
def polygon(n):
for x in range(n): # n번 반복
t.forward(50) # 거북이를 50 만큼 앞으로 이동
t.left(360/n) # 거북이를 360/n만큼 왼쪽으로 회전
polygon(3)
polygon(5)

def polygon2(n, a):
for x in range(n):
t.forward(a) # 거북이를 a만큼 앞으로 이동)
t.left(360/n)

t.up()
t.forward(100)
t.down()

polygon2(3, 75) # 한 변이 75인 삼각형을 그린다
polygon2(5, 100) # 한 변이 100인 5각형을 그린다

  1. t.up()

  2. t.forward(100)

  3. t.down()
    함수는

  4. 거북이가 그림을 그리지 않고 움직이도록 펜을 종이에서 들고

  5. 100 만큼 이동한 후

  6. 다시 그림을 그리도록 펜을 종이에 내려놓는다

이 명령어로 인해 처음에 그린 정삼각형, 정오각형에서 100 픽셀만큼 떨어진 곳에서 다시 그림을 그리게 되었다.

def polygon2(n, a): 에서 첫 번째 인자 n은 도형의 각을 정하며, 두 번째 인자 a는 거북이의 이동거리, 즉 다각형 한 변의 길이를 의미한다.