파이썬(5. while문에 대해 알아보자)
1. while문
2. break문
이렇게 알아보도록 하겠습니다.
1. while문
while의 영어 뜻은 '~동안' 입니다.
파이썬에서 while은 반복문을 뜻합니다.
예를 들어
while(조건문):
수행할 문장1
위의 구조가 while문의 기본 구조입니다.
조건문이 참인 동안, 수행할 문장1을 수행한다. 뭐 이런 뜻입니다.
while문의 조건문이 참인 동안에 수행할 문장들이 반복해서 수행이 됩니다.
이런 설명들 보다 예제를 보는 것이 좋습니다.
예제를 보겠습니다.
clap = 0
while clap < 10:
clap = clap + 1
print("박수를 %d번 쳤습니다." %clap)
보면
1번째 줄 clap = 0 이라고 변수를 정해줍니다.
그리고 2번째 줄 while clap < 10: 은 위에서 봤던 while (조건문): 에 해당합니다.
clap < 10이 조건문에 해당하는데 clap이 10보다 작다면..... , 10보다 작은게 참이라면..... 이런 뜻입니다.
그리고 : (콜론)은 꼭 써주셔야 됩니다.
그리고 들여쓰기도 꼭 해주셔야 됩니다. 안 그러면 오류가 납니다.
3번째 줄 clap = clap + 1은 clap변수에 1씩 더해준다는 뜻입니다.
반복문이 끝날 동안 계속해서 수행문이 끝나면 +1이 됩니다.
처음 clap = 0이라고 변수를 정해주었기 때문에 while 조건문을 지나 clap = clap + 1 를 만납니다.
만나게 되면 clap은 현재 0이기 때문에 1이 더해져 clap = 1이 됩니다.
수행문을 지나 그 다음 반복될 때는 또 clap = 1에 1이 더해져 clap = 2가 됩니다. 이렇게 10까지 반복됩니다.
저 위 코드의 결과입니다.
위의 설명을 이해하셨다면 결과를 보고 만족했을겁니다.
만약 못했다면 아마 왜 10까지 나오냐.... 라는 의문일 거라 생각합니다.
clap < 10 이 조건문 이였습니다.
clap = 0에서 시작했고 clap = 9까지는 이해하실 거라 생각합니다.
여기서 조건문은 10미만인데 왜 10이 나오냐가 문제인데
clap = 0
while clap < 10:
clap = clap + 1
print("박수를 %d번 쳤습니다." %clap)
코드를 다시보면
clap이 9일 때 '박수를 9번 쳤습니다.' 가 수행되고 처음으로 돌아갑니다. 현재 clap은 9입니다.
그다음 10미만이기 때문에 while문을 지납니다.
그리고 clap = clap + 1 때문에 clap = 9에 1이 더해져 10이 되고 '박수를 10번 쳤습니다.' 가 수행됩니다.
그리고 다시 처음으로 돌아가면 이제 clap은 10이기 때문에 while이 거짓이 되어 반복문이 끝나게 됩니다.
while문을 쓰는 이유는 저런 단순 반복이 되는 과정을 짧은 코드들로 만들 수 있기 때문입니다.
2. break문
다음은 break문을 알아보도록 하겠습니다.
while문은 조건문만 참이면 계속해서 반복됩니다.
하지만 강제로 while문을 빠져나가야 할 때가 있습니다.
좋은 예가 하나 있습니다.
음료수 자판기를 생각해보면 자판기 안에 음료수가 있을 때는 돈을 넣으면 음료수가 나옵니다.
그런데 자판기가 제대로 작동하기 위해서는 음료수가 자판기 안에 얼마나 남았는지 항상 알고 있어야 됩니다.
만약 음료수가 다 팔려 없다면 판매를 중단해야 됩니다.
이렇게 판매를 강제로 중단하는 것이 break문입니다.
drink = 10
money = 100
while money:
print("돈을 받았습니다. 음료수를 드리겠습니다.")
drink = drink - 1
print("남은 커피의 양은 %d개 입니다." %drink)
if not drink:
print("음료수가 다 떨어졌습니다. 판매 중지!")
break
간단한 예를 보겠습니다.
1번째 줄 drink = 10 음료수는 10개가 있고, 2번째 줄 money = 100 돈은 100원이 있습니다.
간단한 예를 보이기 위해 돈은 차감되지 않도록 하였습니다.
3번째 줄 while money:는 돈이 있다면.... 입니다. 돈은 차감되지 않으므로 계속해서 참이 됩니다.
4번째 줄 print("돈을 받았습니다. 음료수를 드리겠습니다.")
print문은 음료수가 0이 되기 전까지 계속해서 반복이 됩니다.
5번째 줄 drink = drink - 1
은 while문의 수행문이 수행될 때 마다 음료수는 1개씩 차감됩니다.
6번째 줄 print("남은 커피의 양은 %d개 입니다." %drink)
는 음료수가 차감되고 남은 커피의 양을 알려주는 print문입니다.
7번째 줄 if not drink:
는 만약 음료수가 없다면..... 이라는 뜻입니다.
그러면 8번째 줄인 print("음료수가 다 떨어졌습니다. 판매 중지!")가 출력되고
9번째 줄 break문이 수행되어 while문은 강제 중지됩니다.
위 코드의 결과입니다.
break문을 이용하여 제대로 된 코드를 하나 짜보겠습니다.
drink = 10
while True:
money = int(input("돈을 넣어주세요"))
if money == 100:
print("음료수를 드리겠습니다.")
drink = drink - 1
elif money > 100:
print("거스름돈 %d를 주고 음료수를 드리겠습니다." % (money-100))
drink = drink - 1
else:
print("돈을 돌려주고 음료수를 주지 않습니다.")
print("남은 음료수의 양은 %d개 입니다." % drink)
if not drink:
print("음료수가 다 떨어졌습니다. 판매 중지!")
break
간단하게만 설명하겠습니다.
while True: 는 딱히 조건 없이 계속 참이라는 뜻입니다.
int(input("돈을 넣어주세요"))는 사용자의 입력을 받는 것입니다.
나머지는 위에서 설명한 것을 토대로 보면 이해가 되실겁니다.
위 코드의 결과입니다.
100원을 넣으면 음료수를 주고, 100원을 초과하여 주면 거스름돈을 주고 음료수를 줍니다.
100원 미만의 돈을 입력하면 음료수를 주지 않습니다.
그러다 음료수가 다 떨어지면 break문이 발동되어 판매 중지!가 출력됩니다.
'코딩 > 파이썬' 카테고리의 다른 글
파이썬(6. 반복문 for문에 대해 알아보자) (0) | 2018.09.05 |
---|---|
파이썬 (4. 제어문의 조건문 if문에 대해 알아보자) (0) | 2018.07.20 |
파이썬 (3. 문자열 활용하기) (0) | 2018.07.19 |
파이썬 (2. 에디터, 자료형에 대해 알아보자) (0) | 2018.07.19 |
파이썬 (1. 기초 준비를 해보자) (0) | 2018.07.19 |
댓글