본문 바로가기

프로그래밍/Python

파이썬 강좌 12 :: 반복문 - while -


안녕하세요~ 죠쓰입니다 !


이번 강좌부터 시작해서 다음강좌까지 반복문에 대해서 알아보도록 할꺼에요. 그럼 질문 ~ 반복문이란 뭘까요? 뭔가를 반복시키는 문법같죠? 네 맞아요. 반복문이란 특정 코드를 반복해서 수행시키는 문법이에요.


그렇다면 같이 생각해봐요. 반복문은 언제까지 코드를 반복하여 수행시킬까요? 10번만? 아니면 100번? 아니면... 무한히?


정답은 "반복조건이 만족하지 않을 때까지" 에요. 반복문을 작성할 때는 반복조건도 같이 작성해줘야 하는데, 프로그램은 이 반복조건을 반복할 때마다 검사해요. 이 조건이 만족할 때만 반복하다가 조건이 만족하지 않는 순간 반복문은 반복을 멈추게 된답니다.


while문


while문은 다음과 같이 while 이라는 키워드, 반복조건식, 들여쓰기된 코드 3부분으로 작성되요.


while 반복조건식:

들여쓰기된 코드


여기서 반복조건식으로 참과 거짓을 반환하는 연산식이 올 수 있어요. 예를 들어 x > y 같은 비교연산식요! 조건식이 참을 반환하면 들여쓰기된 코드를 반복 수행하게 되요. 코드가 반복 수행될 때마다 반복조건식을 검사하게 되고 조건식이 거짓을 반환하게 되는 순간 while문은 종료된답니다.


다음은 간단한 while문 예제에요. 프로그램을 실행하게 되면 'hello python'이라는 문장이 5번 출력되고 프로그램이 종료될 거에요.


# main.py


count = 0

while count < 5:

    print('hello python')

    count = count + 1



예제에서 count < 5 가 바로 조건식이에요. while문이 실행되면 코드를 반복 수행할 때마다 조건식을 검사하게 되겠죠.




# while01.py


count = 1


while count <= 5 :

    print(count)

    count = count + 1


while문은 다음과 같은 형식을 가집니다.


while 조건식:

    들여쓰기된 코드


while문은 조건이 참일 경우 들여쓰기된 코드들을 전부 실행하고 다시 조건을 검사합니다. 이러한 과정이 조건이 거짓이 될때까지 계속하여 반복적으로 수행됩니다.




§ 탈출 조건과 break


반복문은 명령문들을 반복적으로 실행시키는 역할도 중요하지만 반복이 중지되는 조건또한 굉장히 중요합니다. 이러한 탈출조건의 설계가 잘못되었을 경우 무한 루프에 빠져 치명적인 에러를 발생시킬 수 있기 때문입니다.


탈출조건은 2가지로 구현될 수 있습니다.


1. 반복문 내부에서 조건식을 거짓으로 만드는 장치 구현

2. break 명령문 사용


1번같은 경우 위의 while01.py에서 count = count + 1 와 같이 조건식을 거짓으로 만드는 명령문을 의미합니다. 그러나 때로는 조건식이 거짓이 되지 않아도 반복문을 빠져나와야하는 경우가 발생합니다. 이럴 때 break를 사용하면 가까운 반복문 하나를 탈출할 수 있습니다.


# while02.py


x = 0


while True :

    x = int(input(" 5를 입력하면 종료됩니다 :"))

    if x == 5 :

        break


프로그램 사용자가 x에 5를 입력할 때까지 반복문은 계속 반복됩니다. 만약 x에 5가 입력되면 break가 수행되여 while문을 빠져나오게 됩니다. 이처럼 반복이 언제까지 수행될지 확실하지 않을 때에는 위와 같이 break를 이용한 탈출 조건을 사용하는 것이 좋습니다.




§ 건너뛰기와 continue


반복문 내부에서 continue 를 만나게되면 아래 부분의 명령문을 건너뛰고 조건검사부터 시작할 수 있습니다.


# while03.py


x = 0


while x < 5 :

    x = x + 1

    continue

    print(x)


반복문이 수행되면서 x의 값이 출력되기를 기대했지만 continue를 만나면서 아래 부분의 명령문은 실행되지 않은 체 while문의 조건검사로 건너뛰게 됩니다.


왜 이런게 필요할까 라는 생각도 들지만 continue문은 분명 쓰는 상황이 있습니다. 예를 들어 반복 도중 실행될 필요가 없거나 실행되서는 안될 명령문들이 있을 때 if문으로 구현하는 것보다는 아예 건너뛰는 것이 논리에 맞을 때가 있습니다. 그럴 때 continue를 사용하면 쓸데없는 연산이 진행되지 않고 명령문을 건너뛸 수 있습니다.






# exercise01.py


x = 1


while x != 10 :

    print("hello world!")

    x = x + 1


Q. 위 파일을 실행하면 hello world!는 몇번 출력될까요?

9회



# exercise02.py


x = 1


while x != 10 :

    if x == 5 :

        break

    print("hello world!")

    x = x + 1


Q. 위 파일을 실행하면 hello world!는 몇번 출력될까요?

4회