[Python] while문
while문의 기본 구조
반복해서 문장을 수행해야 할 경우 while문을 사용한다.
while문은 조건문이 참인 동안에 while문 아래의 문장이 반복해서 수행한다.
while 조건문:
수행할 문장1
수행할 문장2
...
수행할 문장N
예제
사진을 열 번 찍을 때까지 반복한다.
>>> takePhoto = 0 # 사진 찍은 횟수
>>> while takePhoto < 10: # 사진을 찍은 횟수가 10보다 작은 동안 반복
... takePhoto += 1 # 사진을 찍은 횟수 1씩 증가
... print("사진을 %d번 찍었다." %takePhoto)
... if takePhoto == 10: # 사진을 10번 찍으면
... print("사진을 다 찍었다.")
...
사진을 1번 찍었다.
사진을 2번 찍었다.
사진을 3번 찍었다.
사진을 4번 찍었다.
사진을 5번 찍었다.
사진을 6번 찍었다.
사진을 7번 찍었다.
사진을 8번 찍었다.
사진을 9번 찍었다.
사진을 10번 찍었다.
사진을 다 찍었다.
위 코드는 takePhoto가 10보다 작은 동안에 while문 안의 문장을 계속 수행한다. while문 안의 문장에 takePhoto += 1은 takePhoto 값이 계속 1씩 증가하는 것을 나타낸다. 그리고 사진을 찍었음을 알리는 문장을 출력하고 10이 되면 '사진을 다 찍었다.' 라는 문장을 출력한다. 그러고 나면 takePhoto < 10 조건문이 거짓이 되므로 while문을 빠져나가게 된다.
while문 만들기
여러 가지 선택지 중 하나를 선택해서 입력받는 예제
>>> prompt = """ # 변수 prompt 출력
... 1. Add
... 2. Del
... 3. List
... 4. Quit
...
... Enter number: """
...
>>> number = 0 # 번호를 입력받을 변수
>>> while number != 4: # 입력받은 번호가 4가 아닌 동안 반복
... print(prompt)
... number = int(input))
위 코드는 number가 4가 아닌 동안 prompt를 출력하고 사용자로부터 번호를 입력받는다. 그리고 사용자가 4를 입력하지 않으면 계속해서 prompt를 반복 출력한다. 하지만 4를 입력하면 조건문이 거짓이 되어 while문을 빠져나가게 된다.
while문 강제로 빠져나가기(break)
while문은 조건문이 참인 동안 계속해서 while문 안의 내용을 반복적으로 수행한다. 하지만 강제로 while문을 빠져나가고 싶을 경우가 있다. 그럴 때는 break문을 사용하면 된다.
>>> coffee = 10
>>> money = 300
>>> while money:
... print("돈을 받았으니 커피를 준다")
... coffee = coffee - 1
... print("남은 커피의 양은 %d개입니다." %coffee)
... if coffee == 0:
... print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
... break
위 코드는 money가 300으로 고정되어 있으므로 while money:에서 조건문인 money는 0이 아니기 때문에 항상 참이다. 그리고 while문의 내용을 한 번 수행할 때마다 coffee의 개수가 1개씩 줄어든다. 계속 줄어서 coffee가 0이 되면 coffee == 0:이 참이 되므로 출력문을 출력하면서 break문이 호출되어 while문을 빠져나가게 된다.
while문의 맨 처음으로 돌아가기(continue)
while문 안의 문장을 수행할 때 입력 조건을 검사해서 조건에 맞지 않으면 while문을 빠져나간다. 하지만 빠져나가지 않고 while문의 맨 처음으로 다시 돌아가게 만들고 싶은 경우가 있을 수 있다. 이때는 continue문을 사용하면 된다.
>>> a = 0
>>> while a < 10:
... a += 1
... if a % 2 == 0:
... continue # a를 2로 나누었을 때 나머지가 0이면 맨 처음으로 돌아간다.
... print(a)
위 코드는 1부터 10까지의 숫자 중 홀수만 출력하는 코드이다. a가 10보다 작은 동안에는 a는 1씩 계속 증가한다. 증가하는 동안에 a의 값이 짝수이면 continue문을 수행한다. 그렇게 되면 while문의 맨 처음으로 돌아가게 된다. 따라서 a가 짝수이면 print(a)가 수행되지 않을 것이다.
무한 루프
무한 루프는 무한히 반복한다는 의미이다. while문의 조건문이 True이므로 항상 참이 된다. 그렇기 때문에 거짓이 발생하지 않으면 계속 무한 반복이 된다. 이럴 때는 command(ctrl) + c를 눌러서 빠져나가면 된다.