C급 개발자와 함께하는 파이썬
4. 제어문 다루기
4.2 while
while문은 특정 조건이 참일 경우 블록의 명령문들을 반복하여 실행할 수 있도록 합니다. while문은 “반복문”의 한 예입니다. 또한 while 문에는 else절이 따라올수 있습니다.
다음과 같은 예제를 만들어보기로 합시다.
5보다 작은 숨겨진 숫자를 하나 만들고 사용자가 입력하여 해당 숫자를 찾는 프로그램을 만든다고 생각해보자.
아래와 같이 만들수 있습니다.
프로그램을 설명하면 다음과 같습니다.
input함수를 통해서 1에서 5사이를 입력하세요. 메시지를 출력하고 키보드 값을 가져옵니다.
input_str은 문자열이므로 input_num이라는 변수를 만들어서 맞추고자하는 secure_num과 비교합니다.
만약 input_num이 secure_num 보다 큰경우 입력한 값이 더 크네요. 라는 메시지를 출력합니다.
만약 input_num이 secure_num보다 작은 경우 입력한 값이 더 작네요. 라는 메시지를 출력합니다.
크지도 작지도 않은경우는 일치하는 경우이니까. 그런 경우는 “맟줬습니다. 축하합니다.!” 메시지를 출력합니다.
여기서는 1부터 5까지의 숫자를 이용하여 작업하였으니 최대 4번만으로 값을 맞출수 있습니다. 하지만 1부터 100사이의 숫자이거나 임의의 숫자 사이인 경우는 너무 길게 프로그코드를 작성해야 합니다.
while문을 작성하기 위해서는 우선 중복되는 코드를 찾아내야 합니다.
위에 코드에서 중복되는 부분을 찾아내면
이 부분이 중복되는 부분으로 찾아낼수 있습니다.
이부분을 while문으로 묶어서 프로그램을 수정해 보도록 하겠습니다.
위의 코드를 확인해보면
라인 6에 while문을 넣어서 기존에 반복적으로 실행해야하는 부분을 while 블록 안으로 넣어주었다. while 블록에 있는 명령들은 문제를 맞추면 나오는 메시지인 “맞췄습니다. 축하합니다.” 메시지를 출력하고 break문을 통해 나타나도록 되어있습니다.
그럼. 맞추는 숫자의 범위를 1 ~ 100 으로 늘려보도록 하겠습니다.
코드를 아래와 같이 할수 있겠네요.
1에서 100사이에 값을 찾는 문제로 변경되었습니다.
1에서 100사이의 숫자를 찾으려니 많은 추리가 필요합니다. 그럼 1에서 100사이에 문제를 찾는 위와같은 경우에도 이렇게 많은 라인이 필요한데 만약 찾지 못하면 프로그램을 종료시킬수도 없습니다. 그럼 이제 특정한 단어가 들어오면 프로그램을 종료시키는 코딩을 해보도록 하겠습니다.
기존 프로그램에서 코드를 추가한후에 실행하였습니다.
Q / q 를 입력하면 “완료버튼을 입력하셨습니다. 종료합니다.”메시지를 출력하고 종료한다.
이제는 아무리 큰수를 찾는 퀴즈를 하더라도 하다가 “Q/q”를 입력하면 프로그램이 종료되도록 되었습니다. 이렇게 while문은 어떤 명령블록의 반복을 피하기 위한 제어문입니다.