반복문의 다양한 종류 및 사용방법에 대해 정리합니다.

개요


  • python의 주요 기능인 반복문의 개념과 활용방법에 대한 내용을 정리합니다.

loop (반복문)

  • 반복적인 작업을 가능하게 해주는 도구

  • 특정 조건을 만족하는 경우 수행할 수 있음 (while)

  • 리스트, 문자열, 튜플 등 컬렉션 타입의 아이템을 하나씩 순회하면서 작업할때 많이 사용 (for)

  • 코드 작업에서, 가장 많이 사용하는 구문 중 하나

  • 주의할점: while을 사용할 경우, 반복을 멈추게 하는 장치가 필요

    • 그렇지 않으면 셀이 무한히 수행되며, jupyter notebook의 재부팅이 필요

while 키워드

  • while 뒤의 조건이 True일 경우, while 코드 블록을 계속 수행

  • while 코드 블록

    • if와 마찬가지로 while문 아래의 들여쓰기(indent)로 작성 된 부분을 의미
  • 조건이 False가 되면 블록 수행을 멈추고 이후 코드를 실행

while 키워드 이용하여 리스트의 아이템 출력하기

1
2
3
4
5
6
7
8
9
a = [1, 10, 9, 24]

i = 0 # 인덱스
while i < len(a):   # i가 a의 길이보다 작을때 아래의 작업을 계속 수행
    print('value: ', a[i], ', index: ', i) # a의 i번째 값과 i번째 인덱스를 출력
    i += 1 # 출력한 뒤 i에 +1을 더한다.
    # 위의 작업을 반복, 조건을 만족하지 않으면 아래의 hahah를 출력
   
print('hahah')
value:  1 , index:  0
value:  10 , index:  1
value:  9 , index:  2
value:  24 , index:  3
hahah

while 키워드 이용하여 리스트의 아이템 출력하기

  • 조건문과 함께 사용하기

a 리스트의 값에서 20보다 큰 수만 print하기

1
2
3
4
5
6
7
a = [1, 10, 9, 24, 25, 26]

i = 0 # 인덱스
while i < len(a): # i가 a의 길이보다 작을때  아래의 작업을 계속 수행
    if a[i] > 20: # 20보다 큰 경우만 출력하기
        print(a[i]) 
    i += 1
24
25
26

a 리스트에서 홀수만 출력하기

방법 1. 직관적으로 조건 명시

1
2
3
4
5
6
7
8
a = [1, 10, 9, 24, 25, 26]

i = 0 # 인덱스
while i < len(a):
    if a[i] % 2 == 1: #직관적으로 홀수인 경우를 지정
        print(a[i])
    i += 1
print('There is no more odd number')
1
9
25
There is no more odd number

방법2. if문에서 1이은 True인 것을 활용

1
2
3
4
5
6
7
8
9
a = [1, 10, 9, 24, 25, 26]

i = 0 # 인덱스
while i < len(a): # i가 a의 길이보다 작을때  아래의 작업을 계속 수행
    if a[i] % 2: # 2로 나눈 몫이 0이면 False -> if문에서 1은 True, 0은 False 개념 이용 
        print(a[i]) # 홀수만 출력
    
    i += 1 # if든, else든 조건문 수행 후 인덱스에 +1 
print('There is no more odd number')    
1
9
25
There is no more odd number

무한루프

  • while의 경우 종료가 되지 않도록 코드를 작성하면 블록에서 빠져나올 수 없음

  • 멈추기 위해서는 명령어 창에서 ‘ctrl+c’ 를 누른다.

  • 쥬피터 노트북에서는 상단의 kernel 메뉴에서 interrupt를 눌러 멈출 수 있다.

1
2
while True:
    print('Plz, stop me')
Plz, stop me
Plz, stop me
Plz, stop me
Plz, stop me
Plz, stop me
Plz, stop me
Plz, stop me
Plz, stop me
Plz, stop me
Plz, stop me
...
Plz, stop me
Plz, stop me
Plz, stop me
Plz, stop me
Plz, stop me

break

  • loop를 중단할 때 사용

  • 보통 조건문 안에서 수행되며, 조건을 만족하는 경우 loop를 탈출하기 위해 사용

  • loop를 중단 하는 경우, while 이후의 코드를 수행

1
2
3
4
5
6
7
8
9
10
11
a = [1, 10, 9, 24, 25, 26]

i = 0 # 인덱스
while i < len(a): # i가 a의 길이보다 작을때  아래의 작업을 계속 수행
    if a[i] > 20: # 값이 20 이상이면 
        break 
        
    print(a[i]) # if문을 만족하지 않으면 print만 실행 된다. 
    i += 1
    
print('There is no more number that bigger than 20')
1
10
9
There is no more number that bigger than 20

continue

  • break 처럼 반복을 중단하진 하여 빠져나오지 않고, 다시 while조건으로 점프함

  • 특정한 경우에는 코드를 수행하지 않고 다음으로 건너 뛰기 위해 사용

1) 6부터 1까지 순차적으로 while문을 사용해서 출력

1
2
3
4
5
a = 7

while a > 0: # 0보다 크면 아래의 명령문 수행
    a -= 1 
    print(a)
6
5
4
3
2
1
0

2) while문을 사용하면서 5만 빼고 출력하고 싶다면?

1
2
3
4
5
6
7
a = 7

while a > 0: # 0보다 크면 아래의 명령문 수행
    a -= 1 
    if a == 5: 
        continue
    print(a)
6
4
3
2
1
0

3) 만약 위의 while문에서 continue대신 break를 사용했다면?

1
2
3
4
5
6
7
a = 7

while a > 0: # 0보다 크면 아래의 명령문 수행
    a -= 1 
    if a == 5: 
        break
    print(a)
6

a == 5 라는 조건을 만족하는 순간 while문이 종료되고 만다.

while문 응용 : 1 - 100까지 더하기

반복문 없이 1부터 100을 더하려면?

1
2
3
print(1+2+3+4+.....+100)

을 하는 수 밖에 없다.

하지만 while문을 사용한다면?

정해진 조건하에 단순 작업을 손쉽게 반복할 수 있다.

예시) 1부터 10까지 수를 늘려가며 더하는 과정을 확인

1
2
3
4
5
6
7
num = 1
_sum = 0 # 합을 계속 저장할 변수 (sum이라는 함수가 있어서 _를 사용)

while num <= 10: # num(=1) 부터 10까지 반복
    _sum += num # 합이 될 값에 num을 순차적으로 더한다.
    num += 1 # num에는 +1씩 더해준다.
    print(_sum, num) # sum된 값과 sum에 추가된 해당 num을 출력
1 2
3 3
6 4
10 5
15 6
21 7
28 8
36 9
45 10
55 11
1
2
3
4
5
6
7
8
num = 1
_sum = 0 # 합을 계속 저장할 변수 (sum이라는 함수가 있어서 _를 사용)

while num <= 100: 
    _sum += num
    num += 1
    
print(_sum)
5050

댓글남기기