Python/Python 시작하기

13. 파이썬 제어문 - While 반복문

arvigoes 2019. 12. 18. 23:28

While 문                                                           

파이선 반복문의 대표.

조건이 참인 동안 계속 반복해서 while 영역(들여쓰기)을 수행합니다.

조건을 조절 하기 위해 조건문을 while 문 내에서 조정 해야 합니다.

while 문에서 조건 조정이 정확하게 이뤄 지지 않는다면 무한 루프가 발생합니다.

일부러 무한루프를 만드는 경우도 있지만 일반적으로는 굉장히 위험 합니다.

무한루프 발생시 에는 빨간 네모 (정지 아이콘)를 눌러 프로그램을 중지 시켜 줍니다.

REPL (파이썬기본제공창) 에서는 Ctrl + C 로 탈출이 가능 합니다.

13-1. 빨간 버튼

while 문 기본 구조

while 조건문:
      수행 영역
      수행 영역
      ...
      조건문 조정 (없어도됨 - 그러나 while 문은 조건문을 조정하는 내용이 수행영역에 있어야 while 문에서 나갈 수 있습니다.)

간단한 구구단의 3단을 출력하는 프로그램을 만들어 보겠습니다.

# Code 1
# 구구단 3단

num = 1
text = "3 * %d = %d"

while num < 10 :                    # 조건문
    ret = 3*num                     # 수행코드
    print(text % (num, ret))        # 수행코드
    num += 1                        # 수행코드 (반복탈출 조건 조정)

13-2. 3단

간단하게 3단은 만들어 봤습니다.

num += 1 :: num = num + 1 과 같은 내용 입니다. 현재 값에 1을 더하라는 구문 입니다.

print(text % (num, ret)) # 수행코드 <- 이 부분이 이해 안가신다면

https://arvigoes.tistory.com/30?category=741485 참고 하세요 문자열 포맷 관련 내용 포스팅 입니다.

3단 while 문 자체는 크게 어려울게 없습니다.

들여쓰기로 수행할 코드 관리 하고, 적절하게 탈출 조건만 정리 해 주시면 됩니다.

 

break 문                                                            

break 문은 반복문(while, for)에서 조건문 이외의 특정 조건에서 반복문을 중단 하고 빠져 나올 때 사용 합니다.

긴급탈출(?) 이랑 비슷 하다 생각 하셔도 됩니다.

무한루프 while 문에서 특정 상황에 break 구문이 있다면 무한 반복문에서도 탈출이 가능 합니다.

# Code 2
# 333

num = 3
text = "3 * %d = %d"

while True:                    # 조건문
    ret = 3*num                     # 수행코드
    print(text % (num, ret))        # 수행코드
    num += 3                        # 수행코드 
    if ret > 100 :                  # 수행코드 (반복탈출 조건 조정)
        break                       # 긴급 탈출

13-3. break 탈출

while 조건이 True 이기에 무한반복 문입니다.

출력한 결과가 최초로 100이 넘어가면 while 문에서 break 로 탈출 하도록 한 예제 입니다.

 

continue 문                                                        

break문과 비슷하게 반복문 수행영역을 빠져나오지만 반목문을 중단 시키지 않고 다음 반복을 수행합니다.

# Code 3
# 333

num = 3
text = "3 * %d = %d"

while num < 20:                    # 조건문
    ret = 3*num                     # 수행코드
    num += 1                        # 수행코드 (반복탈출 조건 조정)
    rest = ret % 2                  # 나머지
    if rest == 0 :                  # 짝수인지
        continue                    # 영역 중지. 다음 반복으로
    print(text % (num - 1, ret))    # 홀수 결과만


13-4. 홀수 결과 출력

print(text % (num -1, ret)) 에서 num -1 을 한 이유는 곱셈을 먼저 수행하고 그 다음 while 조건 제어를 위해 num += 1 을 수행 하였기에 출력에서는 -1을 한것으로 해야 결과에 맞는 숫자가 나옴니다.

3 * 2는 결과가 6인데 6은 출력이 안되고 continue 로 영역 수행 중지가 되고 다음 반복 3 * 3이 수행 된걸 알 수 있습니다.