티스토리 뷰

#13 파이썬 chapter 13. while문

 

1. while 문의 기본 구조

 

반복해서 문장을 수행해야 할 경우 while 문을 사용한다. 그래서 while 문을 반복문이라고도 부른다.

 

while 문이 기본 구조이다.

 

while 조건문:
  수행할 문장1
  수행할 문장2
  수행할 문장3
  ...

 

while문은 조건문이 참인 동안에 while문 아래의 문장이 반복해서 수행된다.

 

treeHit = 0
while treeHit < 10:
    treeHit = treeHit + 1
    print("나무를 %d번 찍었습니다." % treeHit)
    if treeHit == 10:
        print("나무 넘어갑니다.")
        
나무를 1번 찍었습니다.
나무를 2번 찍었습니다.
나무를 3번 찍었습니다.
나무를 4번 찍었습니다.
나무를 5번 찍었습니다.
나무를 6번 찍었습니다.
나무를 7번 찍었습니다.
나무를 8번 찍었습니다.
나무를 9번 찍었습니다.
나무를 10번 찍었습니다.
나무 넘어갑니다.

 

위 예에서 while문의 조건문은 treeHit < 10 이다. 즉 treeHit이 10보다 작은 동안에 while문 안의 문장을 계속 수행한다.

 

treeHit이 10이 되면 treeHit < 10 은 거짓이 되므로 while문을 빠져나가게 된다.

 

2. while문 만들기

 

이번에는 여러 가지 선택지 중 하나를 선택해서 입력받는 예제를 만들어 보자. 

 

prompt = """
1. Add
2. Del
3. List
4. Quit

Enter number: """

number = 0
while number != 4:
    print(prompt)
    number = int(input())
    
1. Add
2. Del
3. List
4. Quit

Enter number: 
1

1. Add
2. Del
3. List
4. Quit

Enter number: 
4    

 

위 while 문을 보면 number가 4가 아닌 동안에는 prompt 를 출력하고 사용자로부터 번호를 입력 받는다.

4를 입력하지 않으면 계속해서 prompt를 출력한다. 4를 입력하면 조건문이 거짓이 되어 while문을 빠져나가게 된다.

 

3. 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 monye: 에서 조건문인 money는 0이 아니기 때문에 항상 참이다. 따라서 무한히 반복되는 무한 루프를 돌게 된다. coffee를 계속 뽑아 먹다가 coffee 가 0이 되면 if 문 다음 문장인 '커피가 다 떨어졌습니다. 판매를 중지합니다.' 가 수행되고 break문이 호출되어 while 문을 빠져나가게 된다.

 

# coffee.py

coffee = 10
while True:
    monye = int(input("돈을 넣어 주세요:"))
    if money == 300:
        print("커피를 줍니다")
        coffee = coffee - 1
        elif money > 300
        print("거스름돈 %d 를 주고 커피를 줍니다." % (money-300))
        coffee = coffee -1
        else:
            print("커피를 주지 않고 돈을 다시 돌려줍니다.")
            print("남은 커피의 양은 %d개 입니다." % coffee)
            if coffee == 0:
                print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
                break

 

4. while문의 맨 처음으로 돌아가기

 

while문 안의 문장을 수행할 때 입력 조건을 검사해서 조건에 맞지 않으면 while문을 빠져나간다. 그런데 프로그래밍을 하다 보면 while문을 빠져나가지 않고 while문의 맨 처음으로 다시 돌아가게 만들고 싶은 경우가 생긴다. 이 때 사용하는 것이 바로 continue문이다.

 

a = 0
while a < 10:
    a = a + 1
    if a % 2 == 0: continue
    print(a)
        
1
3
5
7
9

 

위 예제는 1 부터 10 까지 숫자중에서 홀수만 출력하는 것을 while문을 사용해서 작성한 것이다.

if a % 2 == 0 이 참일 경우는 a가 짝수일 때이다. 즉 a가 짝수이면 continue 문장을 수행한다. 이 continue문은 while문의 맨 처음으로 돌아가게 하는 명령어이다. 따라서 위 예에서 a가 짝수이면 print(a)는 수행되지 않는다.

 

5. 무한루프

 

이번에는 무한 루프에 대해 알아보자. 무한 루프란 무한히 반복된다는 의미이다. 우리가 사용하는 일반 프로그램 중에서 무한 루프 개념을 사용하지 않는 프로그램은 거의 없다. 그만큼 자주 사용한다는 뜻이다.

파이썬에서 무한 루프는 while문으로 구현할 수 있다.

 

while True:
  수행할 문장1
  수행할 문장2
  ...
  

 

위와 같은 것이 무한 루프의 기본 형태이다.

 

 

출처 : 점프 투 파이썬

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
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 29 30
글 보관함