일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 문자열 포매팅
- 파이썬 자료형
- 파이썬
- if~elif~else
- 문자열포매팅 정렬
- 라즈베리파이3B+
- 섭씨화씨변환프로그램
- float()
- while반복문
- 자료형
- f문자열포매팅
- 프로그램
- 파이썬문자열
- 온도변환프로그램
- 파이썬 형변환
- 천 단위 콤마
- 문자열프로그램
- str()
- 라즈베리파이
- Python
- 서식지정자
- 티스토리
- 라즈비안
- 파이썬 반복문
- 라즈베리파이 삼바
- 문자열
- 소수점 표현
- 파이썬 문자열 프로그램
- 파이썬 문자열 함수
- print()
- Today
- Total
Welcome to the Matrix
019. while 반복문을 이용한 파이썬 반복문 본문
오늘은 파이썬 반복문 그 첫 번째 시간으로 'while 반복문'에 대해서 알아보겠습니다.
반복문
만약 동일한 문장을 두 번 실행해야 한다면 어떻게 할까요?
여러 가지 방법이 있겠지만, 가장 먼저 떠오르는 방법은 문장을 복사해서 그 문장 아래 붙여 넣고 실행하는 것입니다.
하지만, 동일한 문장을 10번, 아니 100번을 실행한다면 어떻게 해야 할까요?
복사와 붙여 넣기를 10번, 또는 100번을 반복해서 해야 할까요??
프로그래밍을 이런 식으로 해야만 한다면, 전 프로그래밍을 여기서 관둘 것 같습니다. ㅎㅎ
대부분의 프로그래밍 언어는 위와 같이 특정 반복되는 작업을 간단하게 처리하기 위해 '반복문'이라는 것을 사용합니다.
그리고, 파이썬 또한 반복문을 언어적인 측면에서 제공을 합니다. 파이썬에서 '반복문'이란 어떠한 작업을 반복해서 수행해야 할 필요가 있을 때 사용하는 파이썬의 문법과 같은 것입니다.
반복문에는 대표적으로 'while 반복문'과 'for 반복문'이 있습니다.
그중, 이번 시간에는 'while 반복문'에 대해서 알아보겠습니다.
while 반복문
while 반복문은 특정 문장들을 얼마만큼 반복해야 할지 모르는 상황에서 사용할 수 있는 반복문입니다.
즉 특정 '조건(조건식)'을 만족하는 동안(while) 계속 '반복 작업'을 하는 문장인 것입니다.
while 반복문은 특정 조건(조건식)을 만족하는 경우에만 반복을 하는 문장입니다.
while 문의 구조는 다음과 같습니다.
while 조건문 :
수행할 문장들..
while 문의 조건문이 참인 동안에만 while문에 종속된 문장들(수행할 문장들)을 반복해서 수행하는 것입니다.
만일 조건문이 거짓이라면, 더 이상 while문을 실행하지 않고 while문 이후의 파이썬 코드를 실행합니다.
참고로 while문도 if 조건문과 동일하게 문장 뒤에 콜론(:)을 붙입니다. 그리고, 콜론 이후에 while문에 종속되는 문장들을 블록(block)으로 처리하기 위해 들여 쓰기를 합니다.
다음 예를 통해 while 문이 어떤 것인지 감을 잡아보도록 하겠습니다.
IDLE를 열고 아래와 같이 소스 코드를 입력해봅시다.
i = 0
while i < 5:
print('Hello, world~!')
i += 1
while문의 핵심인 조건문이 i < 5입니다. i가 5보다 작을 때(참)만, while문에 종속된 블록을 실행하는 것입니다.
즉, i는 0부터 1씩 증가를 하게 되고 어느 시점, 즉 5와 같아지는 시점엔 더 이상 while문을 실행하지 않고 빠져나오게 됩니다.
i += 1은 i = i + 1과 동일한 문장입니다.
이번엔 조금 다른 예를 살펴보겠습니다.
IDLE의 새 파일을 열고 아래와 같이 소스 코드를 입력하고 실행합니다.
repeat_cnt = int(input('얼마나 반복할까요? '))
count = 1
while count <= repeat_cnt:
print(f'It is repeated {count}times.')
count += 1
암호와도 같아 보이는 코드의 내용을 굳이 설명하지 않더라도 대충 읽어 내려가면 무슨 내용인지 감을 잡을 수 있을 것입니다.
위 소스코드에서 핵심 부분인 while문의 조건문은 'count <= repeat_cnt'입니다. count 값이 repeat_cnt 값 보다 작거나 같을 동안만 while문 블록의 내용을 반복을 하겠다는 의미입니다.
먼저, repeat_cnt라는 변수에 반복을 위한 입력값을 정수로 입력받습니다.
그리고, count 변수의 값이 reapeat_cnt의 값보다 작거나 같을 동안 while 문을 반복합니다.
while문의 블록 마지막에 count 변수를 1 증가(count += 1)시킵니다. 즉, while문을 한 번 돌 때마다 count 값이 1씩 증가합니다. count 값이 1씩 증가하기 때문에, 언젠가는 repeat_cnt 값 보다 커질 때가 올 것입니다. 바로 이때 while문의 반복을 멈추고 빠져나오게 되는 것입니다.
결과를 보도록 하죠.
반복 횟수를 위해 입력값으로 3을 입력하면, 세 번 반복을 하며 동일한 문장을 실행합니다.
또, 입력값으로 5를 입력하면 다섯 번을 반복하며 동일한 문장을 실행합니다.
break, while문 탈출
while문의 핵심은 바로 '조건문'의 조건이 참이냐 거짓이냐에 의해서 while 반복문을 실행하거나 실행하지 않거나 하는 것입니다.
while문의 조건문이 처음부터 거짓이라면, 절대 while 반복문이 실행되지 않을 것입니다.
그리고 while문의 조건문이 처음부터 참이라면, 그 조건문이 거짓이 되기 전까지 while 반복문을 실행하는 것이죠.
하지만, 만일 while문의 조건문이 처음부터 참이지만, 절대 거짓이 되지 않는 상황이라면?
이러한 상황을 '무한반복'이라고 합니다.
무한 반복되는 프로그램을 보면, 프로그램이 멈춰서 아무것도 안 하는 것처럼 보입니다. 어떤 경우, 실수로 무한반복에 빠지도록 프로그램을 작성한 경우, 아주 큰 문제가 발생할 수도 있습니다.
무한반복을 빠져나오기 위해서는 키보드의 Ctrl + C 키를 입력해 빠져나올 수 있습니다.
프로그래밍 언어에서는 이렇게 반복문의 조건문에서 거짓이 되지 않는 경우에도 while문을 빠져나올 수 있는 방법을 제공합니다.
'break'라고 하는 것인데요, 말 그대로 while문에 브레이크를 거는 것이죠.
아래와 같은 코드를 작성하면, 무한 반복에 빠집니다.
count = 1
while count > 0:
print('go forever~!')
count += 1
while문의 조건문이 count 값이 0보다 클 경우에 참으로 판단하고 while문 블록의 내용을 실행하게 되는데, count 값은 1부터 계속 증가만 하기 때문에 항상 0보다 큰 값이 됩니다.
이럴 경우, 아래와 같이 while문 내부에서 특정 조건을 주어 반복문을 빠져나올 수 있습니다.
count = 1
while count > 0:
print('go~! until count is 5!!')
if count >= 5:
break
count += 1
비록, while문의 조건문이 항상 참이지만 반복문 내부에서 count의 조건이 특정 조건을 만족할 경우, 'break'라는 매직 키워드를 사용해서 반복문을 빠져나올 수 있는 것입니다.
이 외에도, while문의 조건문과 상관없이 반복문 내에서 특정 조건을 만족할 경우 while 반복문을 빠져나오기 위해서도 'break'를 사용합니다.
'break'는 매우 중요하고 유용한 키워드이기 때문에 반드시 기억을 하고 있어야 합니다.
while문의 조건문과 상관없이 반복문 내의 특정 조건을 만족할 경우 while문을 빠져나오기 위해 'break'를 사용합니다.
continue, while문의 처음으로 이동
while문의 조건문이 참이어서 while문의 블록을 실행한다고 가정합시다.
프로그래밍을 하다 보면, while문의 블록을 실행하는 도중 중간에 어떤 조건을 만족해서 그 조건 다음의 문장을 실행하지 않고, 다시 while문의 처음으로 돌아가야 할 상황이 발생할 수 있습니다.
이럴 때 사용하는 것이 'continue'라는 것입니다.
예를 들어, 1부터 10까지 홀수를 출력하는 프로그램을 만든다고 가정합시다.
1, 3, 5, 7, 9를 출력해야 합니다. 하지만, 2, 4, 6, 8, 10의 경우에는 출력을 하지 않고 넘어가야 합니다.
물론 이 프로그램의 경우 아주 간단하기 때문에 다른 방법을 사용할 수 있을 것입니다. 하지만, 이런 경우 'continue'라는 키워드를 사용하면 아주 유용하게 사용할 수 있습니다.
다음 예를 살펴봅시다.
number = 0
while number < 10:
number += 1
if number % 2 == 0:
continue
print(number)
number가 10보다 작을 동안 while문을 반복합니다. 또, 반복할 때마다 number의 값을 1씩 증가합니다.
그리고, 만약 number이 짝수라면(number%2 == 0) 더 이상 아랫부분을 실행하지 않고, while문의 블록 처음으로 돌아갑니다.
while문의 블록을 실행하는 중간에 while문 블록의 처음으로 돌아가기 위해서는 'continue' 키워드를 사용합니다.
coutinue도 종종 사용되긴 합니다만, break보다 많이 사용되지는 않는 듯합니다.
그래도 함께 알아두면 아주 유용하게 사용할 수 있습니다.
이상으로 파이썬 반복문 중 'while 반복문'에 대해서 살펴봤습니다.
다음번엔 아마도 파이썬 반복문 중 'for 반복문'에 대해서 살펴볼 것 같습니다.
'Python > PythonBasic' 카테고리의 다른 글
020. for 문을 이용한 파이썬 반복문과 활용 (0) | 2021.01.07 |
---|---|
018. 파이썬 if, else, elif 조건문을 이용한 조건 분기 (0) | 2021.01.05 |
017. 파이썬 문자열 처리를 위한 다양한 문자열 함수 (0) | 2021.01.04 |
016. 문자열 자료형을 이용한 간단한 파이썬 프로그램 - 주민등록번호 앞 6자리로 생년, 월, 일 정보 출력 (0) | 2021.01.02 |
015. 숫자 자료형을 이용한 간단한 파이썬 프로그램 예제 - 섭씨 화씨 변환 프로그램 (0) | 2021.01.02 |