[Python] While문

shlim55·2025년 11월 2일

Python

목록 보기
7/25
post-thumbnail

03-2 while문

while 문의 기본 구조

while 조건문:
    수행할_문장1
    수행할_문장2
    수행할_문장3
    ...

나무를 10번찍어야 한다는 상황을 생각해볼 것. 10번 찍으면 그 루프문을 벗어난다.

>>> treeHit = 0
>>> while treeHit < 10:
...     treeHit = treeHit +1
...     print("나무를 %d번 찍었습니다." % treeHit)
...     if treeHit == 10:
...         print("나무 넘어갑니다.")
...

나무를 1번 찍었습니다.
나무를 2번 찍었습니다.
나무를 3번 찍었습니다.
나무를 4번 찍었습니다.
나무를 5번 찍었습니다.
나무를 6번 찍었습니다.
나무를 7번 찍었습니다.
나무를 8번 찍었습니다.
나무를 9번 찍었습니다.
나무를 10번 찍었습니다.
나무 넘어갑니다.
이렇게 찍힌다. 반복문을 돌때마다 treeHit변수가 1씩증가하고 print문으로 출력한다. 10번을 찍으면 나무가 넘어간다는 print문

디버깅모드 브레이킹 포인트 잡은담에 F5
한줄씩 한줄씩 어떻게 실행되는지 알수있는 구조
F5 다음 브레이크 포인트로 이동 F10 한줄씩 이동

treeHit = treeHit +1 이코드문도 실제로 많이 쓰는 표현

그래서 파이썬에서는 어떻게 줄이느냐 이걸 굳이 두번 안쓰고 treeHit += 1 이렇게 줄임

반대로 treeHit -= 1은

treeHit = treeHit - 1와 같은 표현

다른언어에선 treeHit++ 이렇게 쓰지만 파이썬에선 없다
아쉽지만 += 1 이렇게 써야 함

treeHit조건문 (treeHit < 10)조건 판단수행하는 문장while문 상태
00 < 10나무를 1번 찍었습니다.반복
11 < 10나무를 2번 찍었습니다.반복
22 < 10나무를 3번 찍었습니다.반복
33 < 10나무를 4번 찍었습니다.반복
44 < 10나무를 5번 찍었습니다.반복
55 < 10나무를 6번 찍었습니다.반복
66 < 10나무를 7번 찍었습니다.반복
77 < 10나무를 8번 찍었습니다.반복
88 < 10나무를 9번 찍었습니다.반복
99 < 10나무를 10번 찍었습니다. 나무 넘어갑니다.반복
1010 < 10거짓(출력 없음)종료

while 문 만들기

number = int(input())는 사용자의 숫자 입력을 받아들이는 것

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

이 money라는 숫자가 0일때만 거짓이다.

-1일때도 나옴

while 문 강제로 빠져나가기

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

Coffee == 0이 되자 반복문을 빠져나가게 break

# 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

여기서도 똑같다. 돈 300이상을 입력하고 거스름돈을 줌
커피 수량 0일때 break하며 반복문을 빠져나간다.

머니 300미만일때 else문 실행 돈을 다시 돌려주고 커피를 주지 않습니다.

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

while 문의 맨 처음(조건문)으로 다시 돌아가게 만들고 싶은 경우가 생기게 된다. 이때 사용하는 것이 바로 continue 문이다.

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

홀수만 출력하는 루프문
2로나눠지면 continue로 다시 맨 처음(조건문)으로 돌아가게 됨

continue는 한 while문안에서만 돌지 바깥에
더큰 while문이 있다해서 가장 가까운데로 감 break도 마찬가지
가장 가까운 반복문을 break

무한 루프

while True: 
    수행할_문장1 
    수행할_문장2
    …
>>> while True:
...     print("Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.")
...
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
profile
A Normal Programmer

0개의 댓글