상세 컨텐츠

본문 제목

[Python] [조건, 반복문] While문

파이썬

by 서원렬 2022. 5. 25. 21:09

본문

728x90
반응형

본 블로그 글은 03-2 while문 - 점프 투 파이썬 (wikidocs.net)를 참조하여 공부하며 기록하기 위해 쓴 글입니다, 거의 복붙 수준이예요.

 

1.while문의 기본 구조

 

다음은 while문의 기본 구조이다.

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

while문은 조건문이 참일 동안 while문 아래의 "들여쓰기"된 문장이 반복해서 수행된다.

 

1부터 10까지 출력하는 프로그램을 while문으로 작성하면 다음과 같다.

num=1
while num<=10:
    print(num)
    num+=1


1
2
3
4
5
6
7
8
9
10

위 예에서 while문의 조건은 num<=10이다. 1부터 시작한 num이 num+=1을 통해 1씩 증가하고 num=10일 때, 10을 출력하고 num+=1을 통해 num=11이 되고, num<=10의 조건은 거짓이 된다. 그리고 while문을 빠져나온다.

 

2. while문 강제로 빠져나가기 

while문은 조건문이 참일 동안 계속해서 while문 안의 내용을 반복적으로 수행한다. 하지만 강제로 while문을 빠져나가고 싶을 때가 있다. 예를 들어, 커피 자판기를 생각해보자. 커피가 충분하면 커피를 판매하면 되지만, 커피가 떨어지면 "판매를 중지"해야한다. 이 때 사용하는 것이 break문이다.

 

커피가 부족한 것을 3잔이 남았을 때라고 하고, 이 커피 자판기 이야기를 파이썬 프로그램으로 표현해보자.

coffee=10

while coffee :
    coffee-=1
    if coffee==3:
        break
    print("남은 커피는 %d잔입니다" %)
    
남은 커피는 9잔입니다
남은 커피는 8잔입니다
남은 커피는 7잔입니다
남은 커피는 6잔입니다
남은 커피는 5잔입니다
남은 커피는 4잔입니다

while문 속에서 coffee-=1을 통해 커피가 한 잔씩 팔린다. 그리고 남은 커피잔 수를 출력한다. 계속 팔리다가 coffee==3이 되면 break문을 통해 while문을 빠져나온다. break문은 반복문에 적용되는 것이므로 if문을 탈출하는 게 아니라, while문을 탈출하게 된다.

 

이제 응용을 해서 다음 문장을 파이썬으로 작성하여보자.

커피가 10잔 들어있는 커피 자판기가 있다. 커피는 1잔단 300원이다. 이용자들로부터 돈을 받는다. 300원을 넘게 넣으면 거스름돈을 주고, 300원을 넣으면 커피만 준다. 300원 이하로 넣으면 돈을 돌려주고 커피는 주지 않는다. 커피가 0잔이 되면 작동을 멈춘다.

 

더보기
coffee=10

while True:
    money=int(input("돈을 넣어주세요: "))
    print("%d원 받았습니다" %money)
    if money>300:
        print("거스름돈은 %d원입니다" %(money-300))
        coffee-=1
        print("남은 커피 수는 %d잔입니다" %coffee)
    elif money==300:
        print("거스름돈은 없습니다.")
        coffee-=1
        print("남은 커피 수는 %d잔입니다" %coffee)
    else:
        print("돈이 부족합니다. 다시 넣어주세요")
    if coffee==0:
        break


돈을 넣어주세요: 500
500원 받았습니다
거스름돈은 200원입니다
남은 커피 수는 9잔입니다
돈을 넣어주세요: 300
300원 받았습니다
거스름돈은 없습니다.
남은 커피 수는 8잔입니다

다음과 같이 만들어볼 수 있다. 꼭 이렇게 똑같이 만들 필요는 없다.

 

3. while문과 continue문

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

 

 

1부터 10까지의 숫자 중 짝수만 출력하는 것을 while문을 사용해서 작성한다고 해보자. 일단 이렇게 작성해 볼 수 있을 것이다.

num=0

while num<=10:
    num+=1
    if num%2==0: print(num)


2
4
6
8
10

하지만 continue문을 이용해 이렇게도 작성해볼 수 있다.

num=0

while num<=10:
    num+=1
    if num%2!=0: continue
    print(num)


2
4
6
8
10

num%2!=0이 참이면 홀수라는 것이고 홀수이면 continue문을 만나 while문의 시작으로 돌아가고, 짝수이면 print(num)을 만나 짝수가 출력된다.

 

4. 무한루프

마지막으로 무한루프에 대해 알아보자. 무한 루프란 무한히 반복한다는 의미이다. 우리가 사용하는 일반 프로그램 중 무한루프의 개념을 사용하지 않는 프로그램은 거의 없다. 그만큼 자주 사용한다는 뜻이다. 파이썬에서 무한루프는 다음과 같이 구현한다.

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

while True에서 조건문이 항상 참이므로 무한 실행된다.

 

다음은 무한 루프의 예이다.

while True:
    num=int(input("5을 입력해야 멈춥니다. 입력 : "))
    if num==5: break


5을 입력해야 멈춥니다. 입력 : 3
5을 입력해야 멈춥니다. 입력 : 2
5을 입력해야 멈춥니다. 입력 : 1
5을 입력해야 멈춥니다. 입력 : 5

Process finished with exit code 0

 

오늘도 수고하셨습니다~~

728x90
반응형

'파이썬' 카테고리의 다른 글

[Python] 함수  (0) 2022.05.28
[N141] Vector  (0) 2022.05.26
[Python] [조건, 반복문] if, for, while문 연습문제  (0) 2022.05.25
[Python] [조건, 반복문] if문  (0) 2022.05.25
[Python] [조건, 반복문] for문  (0) 2022.05.25

관련글 더보기