앞에서 for를 이용해서 2단부터 9단까지의 구구단을 출력해 봤습니다.
근데, 2단만 출력하려면 어떻게 하면 될까요?
i=2
for j in range(1,10):
print (i, 'x', j, '=', i*j)
2단 하고 5단 만을 출력하려면 어떻게 하면 될까요?
i=2
for j in range(1,10):
print (i, 'x', j, '=', i*j)
i=5
for j in range(1,10):
print (i, 'x', j, '=', i*j)
2단, 4단, 6단, 8단, 10단, 12단을 출력하세요.
def gugu(i):
for j in range(1,10):
print(i, 'x', j, '=', i * j)
for dan in range(2,13,2):
gugu(dan)
코드가 예상과 좀 다른가요? ㅎㅎ
위 코드에서는, gugu라는 함수를 만들어서 공통된 작업을 수행하게 했습니다.
함수(function)라는 것은 수학에서의 '함수'와 좀 다릅니다.
수학에서의 함수는 y=2x+1과 같이 x에 대응하는 y를 나타내는 것인 반면에, 프로그래밍에서의 함수는 어떤 입력을 주면 그 입력을 가지고 어떤 작업을 하는 덩어리가 함수입니다.
함수는 definition을 뜻하는 def라는 키워드를 이용해서 만들어집니다.
def 함수이름(입력파라미터):
코드
코드
코드
함수 gugu가 정의된 것을 보면,
def gugu(i):
for j in range(1,10):
print(i, 'x', j, '=', i * j)
입력으로 주어지게 되는 i값이 2단 3단 등의 단 구분 역할을 해서 2 x 1 = 2 , .... 2x9=18이라고 출력하기도 하고, gugu(3)이라고 호출되면 3x1=3, ... 3x9=18처럼 출력되게 됩니다.
따라서, 2단, 4단, 6단, 8단, 10단, 12단을 출력할 것이기에, gugu(2), gugu(4), gugu(6) ... 이렇게 호출하면 되기에,
for dan in range(2,13,2):
gugu(dan)
이처럼 코딩하면 됩니다. 여기서는 dan이라는 변수가 {2,4,6,8,10,12} 값이 되어 차례차례로 gugu() 함수를 호출하는 거지요.
여기서 궁금하게 여길 수 있는 것이, 프로그램이 실행되는 것이 위쪽 코드에서부터 차례로 실행되는 것 같은데, 왜 def gugu(i):로 시작되는 함수는 실행되지 않고 그냥 통과한 후, 그 밑에 쪽에 있는 for dan in range(2,13,2):라고 되어 있는 부분만 실행되느냐는 것.
답은, def로 선언되는 것은 함수라는 것이 약속되어 있기에 def로 시작된 블록은 함수로서 저장만 되어 있다가, 함수 밑에 쪽에 있는 일반 코드가 그냥 실행되는 것.
함수가 실행되려면 일반 코드에서 그 함수를 호출해야만 실행이 될 수 있는 것입니다.
함수 예제를 하나만 더 들어보겠습니다.
a~b까지의 연속된 정수를 더한 값을 리턴하는 continuous_sum(a,b)를 만드세요. 예를 들어 c = continuous_sum(2,4)라고 호출하면 c=9가 되야 함 힌트: 함수내에서 계산한 값이 sum이면, 함수의 끝에서 return sum을 해주면 됨 |
def continuous_sum(a,b):
sum = 0
for i in range(a,b+1): # b+1로 했음에 유의
sum = sum + i
return sum # return이라는 키워드에 의해 sum 값이 함수의 값으로 전달됨
c = continuous_sum(2,4)
print(c)
-끝-
다음글: 03-3 if 구문 익히기
목차로 이동: [목차]CxO를 위한 코딩 강좌(파이썬을 중심으로)
'Programming > CxO를 위한 코딩' 카테고리의 다른 글
04장. 데이터 다루기 (0) | 2020.06.25 |
---|---|
03-3 if 구문 익히기 (0) | 2020.06.25 |
03-1 반복작업 시키기 (for) (0) | 2020.06.25 |
03장. 기본 문법 익히기 (0) | 2020.06.25 |
02-2. 계산하기(산수) (0) | 2020.06.25 |