coffee = 10 money = 300# money 값은 300으로 고정, 계속 True while money: # money 값이 True인 동안 print("돈을 받았으니 커피를 줍니다.") coffee -= coffee print("남은 커피의 양은 %d개입니다." % coffee) if coffee == 0: print("커피가 다 떨어졌습니다. 판매를 중지합니다.") break
money 값이 300으로 고정되어 있으므로 while money:에서 money는 항상 참이다. 따라서 coffee -= 1에 의해 coffee값이 음수가 되더라도 계속 실행되는 무한 루프를 돌게 된다.
if문 속에서 break 문에 의해 while문을 빠져나가게 된다.
Q. 위의 예제를 활용하여 실제 자판기 작동 과정과 비슷하게 만들어보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
coffee = 5 whileTrue: money = int(input("돈을 넣어주세요:")) if money == 300: print("커피를 줍니다.") coffee -= 1 elif money > 300: print("거스름돈 %d를 주고 커피를 줍니다." % (money - 300)) coffee -= 1 else: print("돈을 다시 돌려주고 커피를 주지 않습니다.") print("남은 커피의 양은 %d개 입니다." % coffee) if coffee == 0: print("커피가 다 떨어졌습니다. 판매를 중지합니다.") break
1 2 3 4 5 6 7 8 9 10 11 12 13 14
돈을 넣어주세요:4000 거스름돈 3700를 주고 커피를 줍니다. 돈을 넣어주세요:300 커피를 줍니다. 돈을 넣어주세요:200 돈을 다시 돌려주고 커피를 주지 않습니다. 남은 커피의 양은 3개 입니다. 돈을 넣어주세요:300 커피를 줍니다. 돈을 넣어주세요:300 커피를 줍니다. 돈을 넣어주세요:300 커피를 줍니다. 커피가 다 떨어졌습니다. 판매를 중지합니다.
while문과 continue
while문 안의 문장을 수행할 때 입력 조건을 검사해서 조건에 맞지 않으면 while문을 빠져나간다.
그런데 while문을 빠져나가지 않고 while문의 맨 처음 조건문으로 다시 돌아가게 만들고 싶은 경우 continue문을 사용한다.
1 2 3 4 5 6
a = 0 while a < 10: a += 1 if a % 2 == 0: continue print(a)
1 2 3 4 5
1 3 5 7 9
a가 10보다 작은 동안 a는 1만큼씩 계속 증가한다. if a%2 == 0이 참이 되는 경우는 a가 짝수일 때이므로 continue문장을 수행한다. 따라서 a가 짝수이면 print(a)는 수행되지 않는다.