파이썬 기초

03-2 while문

goldang 2021. 3. 14. 14:56

- while문의 기본 구조

 

반복해서 문장을 수행해야 할 경우 while문을 사용한다.

while문은 반복문

 

 ex)

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

위 예제에서 while문의 조건문은 treeHit < 10 이다. 즉 threeHit 가 10보다 작은 동안에 while문의 문장을 계속 수행한다. threeHit = threeHit+ + 1 은 프로그래밍 할때 매우 자주 사용하는 기법이다.

 

- 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: 

number 변수에 0을 먼저 대입한다. 이렇게 변수를 먼저 설정해 놓지 않으면 다음에 나올 while문의 조건문인 number !=4에서 변수가 존재 하지 않는다는 오류가 발생한다.

while문을 보면 number가 4가 아닌 동안 prompt를 출력하고 사용자로부터 번호를 입력 받는다. 값4를 입력하지 않으면 pompt를 출력한다.

 

Enter number:
1

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



Enter number:
4
>>> 

4를 입력하지 않으면 계속해서 prompt 출력 , 4입력시 while문 빠져나간다. 

 

-while문 강제로 빠져나가기

 

coffee = 10
money = 300
while money:
    print("돈을 받았으니 커피를 줍니다.")
    coffee = coffee - 1
    print("남은 커피의 양은 %d개 입니다."% coffee)
if coffe == 0:
        print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
break


돈을 받았으니 커피를 줍니다.
남은 커피의 양은 9개 입니다.
돈을 받았으니 커피를 줍니다.
남은 커피의 양은 8개 입니다.
돈을 받았으니 커피를 줍니다.
남은 커피의 양은 7개 입니다.
돈을 받았으니 커피를 줍니다.
남은 커피의 양은 6개 입니다.
돈을 받았으니 커피를 줍니다.
남은 커피의 양은 5개 입니다.
돈을 받았으니 커피를 줍니다.
남은 커피의 양은 4개 입니다.
돈을 받았으니 커피를 줍니다.
남은 커피의 양은 3개 입니다.
돈을 받았으니 커피를 줍니다.
남은 커피의 양은 2개 입니다.
돈을 받았으니 커피를 줍니다.
남은 커피의 양은 1개 입니다.
돈을 받았으니 커피를 줍니다.
남은 커피의 양은 0개 입니다.
돈을 받았으니 커피를 줍니다.
남은 커피의 양은 -1개 입니다.
돈을 받았으니 커피를 줍니다.


 

무한히 반복되는 무한 루프를 돌게 된다. 따라서 아래처럼 수정을 해야한다.

ex)

# coffee.py
coffee = 10
while True:
    money = 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


돈을 넣어 주세요:  

입력 란에 여러 숫자를 입력해 보면서 결과 확인

돈을 넣어 주세요:500
거스름돈 200을 주고 커피를 줍니다.

 

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

 

while문을 빠져나가지 않고 while문의 맨 처음으로 다시 돌아가게 만들고 싶은 경우

 

ex)

a = 0
while a < 10:                   맨 처음으로 돌아가게하는 명령어
    a = a+1
    if a % 2 == 0: continue     a를 2로 나누었을 때 나머지가 0인 경우 즉 짝수
    print(a)
    
1
3
5
7
9

a<10이 맨처음으로 돌아가게 하는 명령어이다. 

 

- 무한 루프

 

ex)

while True:
    print("Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.")
    
    Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.

 

무한루프는

컨트롤 + c 를 눌루서 빠져나가자.

 

출처 : "점프 투 파이썬"