본문 바로가기

 

 

코딩/파이썬

파이썬(5. while문에 대해 알아보자)

everything info 2018. 9. 4.
반응형

파이썬(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 + 1clap변수에 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문이 발동되어 판매 중지!가 출력됩니다.



반응형

댓글