본문 바로가기

Programming/CxO를 위한 코딩

03-1 반복작업 시키기 (for)

반응형

컴퓨터의 가장 큰 특징 중 하나가 시키는 것을 불평 없이 반복해서 할 수 있는 것입니다.

 

반복해서 뭔가를 시키는 명령이 for 입니다.

 

1에서부터 100까지 자연수를 더해라라는 명령을 하려면, 어떤 변수의 값을 1에서 100까지 증가시키면서 반복해서 더하게 하면 될 겁니다.

 

sum = 0
for i in range(1,101,1):
    sum = sum + i

print(sum)    # 5050 출력될 것임

위 코드를 실행하면 5050이 출력될 겁니다.


코드에서 대해서 한 줄씩 설명하겠습니다. (처음이니깐 장황하게 설명)

sum = 0 

더해지는 값을 저장할 변수를 sum이라는 이름으로 했고, 초기값으로 0을 넣었습니다. 이 sum 변수가 최종에는 5050이 되겠죠. (5050은 1~100까지 더한 값)

 

변수는 말 그대로 변하는 값을 저장하는 어떤 것이고, 변수에다가 값을 넣을 수도 있고 읽을 수도 있습니다.

for i in range(1,101,1):
    sum = sum + i

for i in range(1,101,1): 의 의미는,

 

i에다가 값을 넣어라. 범위는 1에서부터 101보다 작을 때까지 1씩 증가시키면서

 

즉, [1, 2, 3, ... , 99, 100]의 값이 차례로 발생합니다.

 

[주의할 점>

- range(1, 100, 1)이 아니고 range(1, 101, 1)
- for .. 구문 제일 뒤에 콜론(:) 있음
- for 다음 줄에 있는 sum = sum + 1은 반드시 들여쓰기해야함. 공백 4칸 등

파이썬에서는 들여쓰기가 매우 중요합니다.

 

for 구문의 경우, for의 영향력이 미치는 것은, for 밑에 있는 들여쓰기한 모든 줄까지 입니다.

 

위 예제에서는 sum = sum + 1 한 줄만 for의 영향력에 있는 것 그리고, 들여쓰기할 때 들여쓰기 칸 수를 통일해야합니다. 공백 4칸 들여쓰기했으면 계속해서 4칸 들여쓰기 해야합니다.

 

중간에 2칸 들여쓰기 하면 안 되고, 탭으로 들여쓰기 해도 안됩니다.


for 명령어의 형태를 일반화하면, 

for 변수 in range(초깃값, 최종값+1, 증가값):
    수식

for 구문에 의해 실제 더해지는 과정을 에뮬레이션 해보는 동영상을 만들었습니다. 

이 동영상을 보면, for 구문이 실행되는 모습이 좀 이해될 것입니다.

 

 


제일 끝 줄에는 계산된 sum을 출력하는 코드가 있습니다.

print(sum)    # 5050 출력될 것임

여기서 # 다음은 주석입니다. 즉, 설명하는 글로 이 #부터 줄 끝까지 있는 글들은 실행되지 않습니다.

 

해서, 코드에 대한 설명이 필요할 때는 이 #을 쓰고 그 뒤에 설명을 쓰면 됩니다.


1~200까지의 합을 구하는 코드는,

sum=0
for i in range(1, 201, 1):
    sum = sum + i

1~100까지의 수 중에서 홀수만의 합을 구하는 코드는,

sum=0
for i in range(1, 101, 2):
    sum = sum + i

range(1, 101, 2)는 "1부터 시작해서 2 만큼씩 증가하면서 101보다 작은 수"의 의미이기에, {1, 3, 5, 7, ..., 97, 99}에 대한 합이 됩니다.

 


퀴즈: 1~100까지 수 중에서 짝수만의 합을 구하는 식이 아래 코드와 같다고 할 때 a, b, c 값은?

sum = 0
for i in range( a, b, c):
    sum = sum + i

 

답은, 

더보기

range(2, 100, 2)

 


구구단 만들기

2 x 1 = 1
2 x 2 = 2
...
2 x 9 = 18

3 x 1 = 1
...


9 x 9 = 81

위와 같은 구구단을 출력하는 것을 for 구문으로 만들어 봅시다.


어떻게 할까요?

 

그냥 한 번 스스로 만들어 보고 나서, 아래 구현된 코드를 보시기 바랍니다. ~

 

for i in range(2,10):
    for j in range(1, 10):
        print (i, 'x', j, '=', i*j)
    print()

 

4줄밖에 안되는데 구구단이 완벽하게 출력될 것입니다.

 

여기서 특이한 것은 for가 2번 쓰인 겁니다. 중첩해서 사용된 것인데, 이에 의해서 다음과 같이 i, j 값이 반복되게 됩니다.

 

range(2,10)은 range(2,10,1)과 똑같습니다. 1씩 증가하는 경우는 세 번째 파라미터인 1이 생략되어 range(2,10)과 같이 쓸 수 있습니다.

 

프로그램이 실행되는 것을 단계별로 풀어서 보면,

 

i = 2일 때
    j = {1,2,3,4,5,6,7,8,9}  --> 따라서 2x1=2, 2x2=4, 2x3=6, .... 2x9=18 이 출력됩니다.
print()에 공백 줄이 하나 생기고,

i = 3일 때,
    j = {1,2,3,4,5,6,7,8,9}  --> 따라서 3x1=3, 3x2=6, 3x3=9, .... 3x9=27 이 출력됩니다.
print()에 공백 줄이 하나 생기고,    

i = 4일 때, 
...

i = 9 일 때,
    j = {1,2,3,4,5,6,7,8,9}  --> 따라서 9x1=9, 9x2=18, 9x3=27, .... 9x9=81 이 출력됩니다.
print()에 공백 줄이 하나 생김

 

for를 이용해서 반복해서 숫자를 만들어내고, 이에 의해서 반복적인 계산을 하는 것을 알아봤습니다.

 

대략 이해는 되었겠지만, 아직 익숙하지는 않을 것입니다.

 

그래서, 숙제를 준비했습니다. 스스로 꼭 풀어보시기 바랍니다. ^^


숙제

19단을 출력하는 프로그램을 짜세요~

 

- 끝 -

 


다음글: 03-2 함수 만들기

목차로 이동: [목차]CxO를 위한 코딩 강좌(파이썬을 중심으로)

반응형

'Programming > CxO를 위한 코딩' 카테고리의 다른 글

03-3 if 구문 익히기  (0) 2020.06.25
03-2 함수 만들기  (0) 2020.06.25
03장. 기본 문법 익히기  (0) 2020.06.25
02-2. 계산하기(산수)  (0) 2020.06.25
02-1. 출력하기  (0) 2020.06.25