본문 바로가기

 

 

코딩/파이썬

파이썬(6. 반복문 for문에 대해 알아보자)

everything info 2018. 9. 5.
반응형

파이썬(6. 반복문 for문에 대해 알아보자)


이전 포스팅에서는 반복문 while에 대해 알아봤습니다.

이번에는 반복문 for문에 대해 알아보도록 하겠습니다.


1. for문

2. continue

3. range

4. for문의 중첩


이렇게 알아보도록 하겠습니다.




1. for문

for문도 반복문이기 때문에 while문과 비슷합니다.

하지만 개인적으로는 for문이 더 유용하고 구조가 더 간단하다고 생각합니다.


for문의 구조

for 변수 in 리스트:
수행할 문장

리스트의 첫번째 요소부터 마지막 요소까지 차례대로 변수에 대입되어 수행할 문장이 실행됩니다.


이렇게 설명하는 것보다 예제를 보는게 더 쉬울 것이라 생각합니다.


list = [1, 2, 3]
for i in list:
print(i)

이런 아주 간단한 예제를 만들어 보았습니다.

1행에서 1,2,3이라는 리스트를 만들어 주었습니다.

그리고 2행에서 list의 첫번째 요소인 1부터 마지막 요소 3까지 차례대로 변수 i에 대입을 합니다.

그러면 3행에서 for문이 끝날 때까지 반복해서 i를 출력해 줍니다.


위 코드의 결과입니다.


또 다른 예제를 하나 더 보겠습니다.

points = [10, 25, 30, 20, 15, 40]
man = 0

for point in points:
man = man + 1
if point >= 25:
print("번호 %d번 사람은 시험에 통과하였습니다." % man)
else:
print("번호 %d번 사람은 시험에 통과하지 못했습니다." % man)

먼저 1행과 2행에서 점수리스트와 사람 번호를 각각 변수에 정해주었습니다.

그리고 3행 for문에서 points에서 순서대로 point변수에 대입을 해줍니다.

4행에서 for문이 하나 실행 될 때 마다 man은 1씩 증가합니다.

그리고 5행에서 if문을 이용해 점수가 25 이상이면 6행 print문을 출력하고,

그렇지 않다면 7행의 else문이 수행되어 8행의 print문이 출력됩니다.


위 코드의 결과입니다.




2. continue

저번 while문 포스팅 때는 break문을 알아봤습니다.

이번 for문에서는 continue문을 알아보겠습니다.


continue문을 for문에서 사용하게 됐을 때, for문 안의 코드를 수행하는 도중 continue문을 만나게 되면 for문의 처음으로 돌아가게 됩니다.


이것도 역시 예제로 살펴보겠습니다.

points = [10, 25, 30, 20, 15, 40]
man = 0

for point in points:
man = man + 1
if point < 25: continue
print("번호 %d번 사람은 시험에 통과하였습니다." % man)

1. for문에서 봤던 코드를 약간 변형하였습니다.

변형된 부분은 5행의 if point < 25: continue 부분입니다.

기존의 if point >= 25: 에서 point < 25: 로 바꾸고 continue를 추가하였습니다.


점수가 25점 이하라면 if point < 25 부분이 참이 되어 continue문이 수행됩니다.

continue문이 수행되면 print문으로 넘어가 수행되지 않고 for문의 처음으로 돌아가게 됩니다.


그리고 1. for문에서 본 코드와 달리 print문 부분에서 들여쓰기를 하지 않았습니다.


그래서 결과는

이렇습니다.




3. range

range에 대해 알아보도록 하겠습니다.

range는 함수입니다.

함수라는 것에 대한 자세한 것은 나중에 알아볼 것입니다.


range함수는 지정된 숫자를 랜덤으로 출력해주는 것입니다.


range는 range(시작 수, 끝 수)의 구조를 가지고 있습니다. 이 때 끝 수는 포함되지 않는다는 점 주의 해주세요

range(0, 5) 이면 0부터 5미만 이라는 뜻입니다. = (0, 1, 2, 3, 4)


이것 또한 예제를 통해 이해하도록 하겠습니다.

num = 0
for i in range(1, 10):
num = num +
1
print(num)

1행에서 num = 0 이라는 변수를 정해뒀습니다.

2행에서 range(1, 10)은 1부터 9까지의 숫자를 가지는 객체입니다.

그래서 1부터 9까지의 숫자를 변수 i에 차례대로 대입을 합니다.

3행에서 num = num + 1 이라는 코드가 반복해서 수행이 되고

4행은 num을 출력해줍니다.


따라서 결과는

이렇습니다.


조금 더 응용해서 예를 하나 더 보겠습니다.

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

변수를 num에서 sum으로 바꾸었습니다. sum은 합이라는 뜻입니다.

2행 for문은 위와 똑같습니다.

3행에서 num = num + 1sum = sum + i로 바꾸었습니다.


설명을 하자면 sum은 0이고 for문이 실행됩니다.

sum = sum + i 는 숫자로 표현하면 현재 sum = 0 + 1입니다. 그래서 sum은 1이 되게 되고 첫번째 결과 값으로 1을 출력합니다.

다음 다시 for문으로 돌아와 i에 2를 대입하며 실행이 됩니다.

그렇다면 현재 sum = sum + i 는 sum = 1 + 2가 됩니다.

그래서 sum은 3이되고 두번째 결과 값으로 3을 출력합니다.


이렇게 계속 반복을 하여 i값이 9가 되고 마지막 값은 결국 1~9의 합인 45가 출력되게 됩니다.


그래서 결과는

이렇게 차례대로 값을 더해나갑니다.

최종적으로 1부터 9까지의 합인 45를 마지막에 출력합니다.




4. for문의 중첩

우리가 반복문을 쓰는 이유는 1억개나 더 많은 문장을 수작업으로는 불가능하기 때문이고 훨씬 간편하기 때문입니다.

그리고 시스템적으로 엄청난 효율성을 가져다 줍니다.


이때까지 for문을 하나만 쓰는 예제를 봐왔습니다.

여기서는 for문의 중첩에서 쓰는 방법을 알아보고 마치도록 하겠습니다.


for i in range(1, 10):
for j in range(1, 10):
print(i*j, end=" ")
print("")

for문을 2개 사용한 예제입니다.

1행의 for문에서는 i에 1~9 숫자가 차례대로 대입됩니다.

2행의 for문에서는 j에 1~9 숫자가 차례대로 대입됩니다.


1행의 for문 변수 i가 1일 때 2행의 for문 변수 j가 1~9까지 순서대로 대입되고 3행 print문을 수행합니다.

그리고 끝나면 이제 1행의 for문 변수 i는 2가 되고 다시 2행의 for문 변수 j가 1~9까지 순서대로 대입되고 3행 print문을 수행합니다.

i가 9가되고 j가 9가 되면 이 코드는 끝이나게 됩니다.


딱히 중요하진 않지만 end=" " 는 값이 끝날 때 뒤에 공백을 주는 명령어 입니다.

그리고 4행의 print("")는 for문의 한 단계가 끝나면 단락을 나누기 위해 추가했습니다. 보기 좋게 하기 위해서입니다.


따라서 결과는

구구단이 완성되었습니다.

1단부터 9단까지 결과들을 단 4줄의 코드로 만들었습니다.




반응형

댓글