컴퓨터의 가장 큰 특징 중 하나가 시키는 것을 불평 없이 반복해서 할 수 있는 것입니다.
반복해서 뭔가를 시키는 명령이 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 |