Back-End/Python

for, while

pshoon25 2022. 11. 27. 03:33

지난 번에는 조건문 if에 대하여 알아보았다.

 

✏️이번엔 반복문 forwhile에 대하여 알아보자!


반복문이란 무엇인가 ?

 

주어진 횟수나 조건에 만족하면 특정 부분을 반복하여 수행하는 구문을 반복문이라고 한다.

 

반복문은 특정 패턴이 있는 부분을 반복문을 사용하여 간략하게 할 수 있다.


🔎우선 for문에 대하여 알아보자.

for <반복 변수> in <반복 범위> :
    <코드>

우선 작성 코드는 위와 같다.

 

<반복 변수>는 <반복 범위>에 따라 변경되며 <코드>를 수행한다.

글로 설명하면 이해하기가 어려울 것이다.

예를 들어 보겠다.

A = [1, 2, 3, 4]

for i in A :
    print(i)
    
#출력값
1
2
3
4

<반복 변수> i에 A값을 입력한 for 반복문을 작성하면,

A의 리스트 순서대로 

1

2

3

4

위 값들이 차례대로 i의 기입되어 출력되는 것을 확인할 수 있다.

그리고 해당 값이 전부 입력되면 반복문이 종료된다.

 

<반복 범위>는 range( )함수를 사용하여 범위를 지정할 수 있고, 위와 같이 '리스트'를 기입할 수도 있다.

또한, len( ) 함수를 사용할 수 도 있다.

country = ['korea', 'china', 'canada', 'japan']

for i in range(len(country)):
    print(country[i])

#출력값
korea
china
canada
japan

위 코딩을 풀이하자면,

 

country 라는 리스트 안에 각 국가명이 기입되어있다.

 

그리고 for 반복문을 사용하여,

 

<반복 변수> i의 범위를 country의 항목 갯수 4를 기입하였다.

 

그러면 i의 변수에는 (0, 1, 2, 3)의 값이 순차적으로 기입이 될 것이다.

 

출력값은 인덱싱을 사용하여 country[0] = korea 부터 country[3] = japan 까지 순차적으로 출력된다.


또한, for 문은 중첩으로도 사용이 가능하다.

X = [1, 2, 3]
Y = ['a', 'b', 'c']

for i in X :
    for k in Y:
        print(i, k)
        
#출력값
1 a
1 b
1 c
2 a
2 b
2 c
3 a
3 b
3 c

위 코딩을 요약하여 설명하자면,

<반복 변수 1> i 에는 우선 X의 첫 번째 순서인 1이 기입된다.

두 번째 <반복 변수 2> k에는 Y의 첫 번째 'a' 값이 기입된다.

그래서 첫 출력값은 '1 a'로 출력된 것이다.

다만, Y의 값 'b', 'c' 가 남아있어 두 값도 순차적으로 출력되어,

'1 b', '1 c' 값이 출력되었다.

Y의 값이 모두 출력되면 반복문은 첫 번째 반복문으로 돌아가 X의 2값을 기입한다.

그 후로는 X의 3값과 Y의 'c'값이 출력될 때 까지 반복 후 종료가 된다.


🔎 그 다음 while 반복문에 대하여 알아보자 !

 

반복문에는 for 문이 있는데 왜 while 까지 필요한가 ?!

 

<반복 범위>가 정해져 있을 경우, for 문을 사용한다.

다만, <반복 범위> 가 없이 조건 만족 여부에만 따라 반복문을 수행하고 싶을 경우 while 문을 사용한다.

 

while <조건문> :
    <코드>

우선 작성 코드는 위와 같다.

 

설명하자면,

<조건문>에 대하여 만족한다면 코드가 반복하여 수행되고, 

<조건문>에 대하여 만족을 하지 못한다면 코드의 반복이 종료된다.

 

예를 들어,

A = 0

while A < 5 :
    print(A)
    
#출력값
0
0
0
...

위와 같이 코드를 작성하였을 경우,

A 의 값은 0이고 <조건문>에 만족을 하기 때문에 0 값을 무한으로 출력하게 된다.

 

다만, A의 값의 변화를 주고 싶을 경우,

A = 0

while A < 5 :
    A = A + 1
    print(A)
    
#출력값
1
2
3
4
5

 위 코드와 같이 반복문 안에 A = A + 1 과 같은 식을 추가해주면 된다.

그러면 반복 횟수에 따라 값이 추가가 되고, 

추가가 되어 주어진 <조건문>만족을 하지 않게 되면 반복문은 종료가 된다.

 

<조건문>에 조건을 주지 않고 무한으로 출력을 하고 싶을 경우,

while True :
    print('ABC')
    
#출력값
ABC
ABC
ABC
...

<조건문> 부분에 'True' 참 값을 기입하면 반복문이 무한으로 수행된다.


위 반복문 forwhile 을 사용할 경우, 

 

반복문의 수행과 종료를 제어할 수 있는 반복 제어문이 있다.

 

그것은 바로 continue, break 두가지 이다.


✏️for 문의 continue, break 예를 알아보자!

 

우선, continue와 break 없이 코딩을 작성하였다.

country = ['korea', 'japan', 'china', 'canada', 'germany', 'france']

for i in range(len(country)) :
    print(country[i])
    
#출력값
korea
japan
china
canada
germany
france

출력하면 <반복 변수> i 에 country의 항목 수 (len(country)) 6의 값이 기입된다.

반복 코드에 인덱스를 사용하여 country[0] = 'korea' 부터 country[5] = 'france' 까지 순차적으로 출력된다.

 

위 함수에 제어 함수 break 를 추가하여 보자.

country = ['korea', 'japan', 'china', 'canada', 'germany', 'france']

for i in range(len(country)) :
    if country[i] == 'canada' :
        break
    print(country[i])
    
#출력값
korea
japan
china

조건 함수 if 문을 추가하였다. 

 

만약 <반복 조건> (country[i] == 'canada') 에 만족하게 되면 break 반복문을 정지하게 하였다.

<반복 변수> i 가 3이 될 경우,

country[3] = 'canada'가 출력이 되며 조건문을 만족하게 된다.

만족을 하게 되면 break 제어문이 실행되어 반복문이 종료.

즉, 출력이 종료되어 country[2] = 'china' 까지만 출력이 된다.

 

위 함수에 continue 함수까지 추가해보자 !

country = ['korea', 'japan', 'china', 'canada', 'germany', 'france']

for i in range(len(country)) :
    if country[i] == 'china' :
        continue
    elif country[i] == 'france':
        break
    print(country[i])
    
#출력값
korea
japan
canada
germany

이번에는 if 조건문에 elif 까지 추가하여 두 가지 조건을 추가하였다.

 

<반복 조건 1> : country[i] == 'china' 일 경우, continue 제어문을 수행

 

country[2] = 'china' 이므로,

i 의 값이 2가 될 경우 continue 제어문이 수행된다.

 

코드는 위에서 아래 순으로 수행이 된다.

다만, continue 제어문이 수행될 경우, continue 하단의 코드를 수행하는 것이 아닌 다음 <코드> 순서로 넘어간다.

즉, i의 값이 순차적으로 0, 1, 2, ...5 까지 순차적으로 수행이 되는데,

i == 2 값이 되면, 밑에 print(country[2])의 출력값인 'china' 를 출력하지 않고,

반복문 처음으로 넘어가 i = 3 값이 입력 된 후 print(country[3]) 의 출력값인 'canada'를 출력하게 된다.

 

<반복 조건 2> : country[i] == 'france' 일 경우, break 제어문을 수행

 

위의 break 제어문 설명과 같이 country[5] == 'france' 값을 출력하지 않고 반복문을 종료하게 된다.


✏️while 문의 continue, break 예를 알아보자!

 

continue와 break 없이 코딩을 작성하였다.

A = 0

while True :
    A = A + 1   
    print(A)  
    
#출력값
1
2
3
4
...

위와 같이 while 반복문을 작성할 경우,

출력값은 무한으로 1씩 계속 증가할 것이다.

 

위 코드에 break 제어문을 추가하였다.

A = 0

while True :
    A = A + 1
    print(A)
    
    if A > 5 :
        break
        
#출력값
1
2
3
4
5
6

if 조건문을 같이 사용하였다.

<반복 조건> A의 값이 5 초과이면 break 제어문이 수행되어 반복문이 종료되게 하였다.

 

A에 0값을 입력하면 0 + 1 = 1이 출력,

1 값이 입력되면 1 + 1 = 2,

5 값이 입력되면 5 + 1 = 6이 출력

A 는 반복문이 1회 반복되면 1씩 증가하도록 되어있다.

 

다만, <반복 조건>의 A의 값이 5 초과면 종료이기 때문에

A에 6값이 입력되면 종료되어,

6 + 1 = 7의 값은 출력되지 않았다.

 

A = 0

while True :
    A = A + 1
    if A == 3 :
        continue
    elif A > 5 :
        break
    print(A)
 
#출력값
1
2
4
5

이번엔 if, elif 조건문을 사용하여 continue 제어문을 추가하였다.

 

<조건 1> A == 3일 경우, continue 제어문이 수행되어 다음 반복을 수행

A 에 2 값이 입력될 경우, A + 1로 인하여 3의 값이 기입된다.

단, continue 제어문으로 인하여 print(A) 까지 수행되지 않고 다음 반복문으로 넘어가기 때문에 3 값은 생략되고 다음 반복문의 출력값인 4가 출력된다.

 

<조건 2> A > 5일 경우, 반복문 종료

A의 값이 4가 입력이 될 경우,

A = 4 + 1인 5 값이 기입이 된다.

그래서 5의 값은 출력이 된다.

단, 5의 값이 입력이 될 경우,

A = 5 + 1이 됨으로, 

elif의 조건을 만족하게 되어 6의 값을 출력하지 않고 반복문 수행을 종료 하게 된다.


조건문과 반복문은 가장 유용하게 사용되며,

혼합하여 사용할 경우,

여러 기능을 구현 또는 단축을 할 수 있음으로 수행되는 원리와 구조를 잘 파악하고 익히는게 좋다.

 

 

 

 

 

 

 

 

'Back-End > Python' 카테고리의 다른 글

try, except, finally  (0) 2022.12.08
class  (0) 2022.12.07
def  (0) 2022.12.05
if  (0) 2022.11.27
[](){}  (0) 2022.11.26