2-1. while 반복문

박성혜·2023년 3월 30일
0
post-thumbnail

파이썬 기초 문법이 궁금하신 분들은
제 벨로그의 파이썬 왕초보 시리즈를 추천 드립니다.

구글 코랩이나 주피터 노트북에서 직접 작성하며 풀어보세요.😊


1. 개념

반복문은 말 그대로
조건이 상황에 맞으면 수행 코드를 반복하는 것이다.

기본 구조

while 조건문:
	수행할 문장 1
    수행할 문장 2
    수행할 문장 3
  1. 조건문이 참이면
  2. 조건문 아래에 있는 수행 코드를 차례대로 수행한 후
  3. 다시 조건문으로 올라간다.
  4. 또 조건문이 참이면
  5. 조건문 아래에 있는 수행 코드를 또 차례대로 수행한 후
  6. 또 다시 조건문으로 올라간다.

이렇게 계속 반복하다가 조건이 참이 아닐 때 멈춘다.

조건문이 항상 참이면 영원히 돌아가버린다.
그렇기 때문에 조건문이 항상 참이 아니게끔 상황이나 조건을 설정해줘야 한다.

2. 반복문 강제로 빠져나가기

조건문이 항상 참이여도
break를 사용하면 강제로 빠져나갈 수가 있다.

while 조건문:
	수행할 문장 1
    수행할 문장 2
    수행할 문장 3
    
    break
  1. 조건문이 참이면
  2. 조건문 아래에 있는 수행 코드를 차례대로 수행한 후
  3. break를 만나서 종료된다.

3. 조건문으로 돌아가기

continue를 실행하면 조건문으로 돌아간다.
break랑 비슷하지만 반복문을 나가는 게 아니다.

while 조건문:
	수행할 문장 1
    수행할 문장 2
    
    continue
    
    수행할 문장 3
  1. 조건문이 참이면
  2. 조건문 아래에 있는 수행 코드 1, 2를 차례대로 수행한 후
  3. continue를 만나서 조건문으로 돌아간다. (수행 코드 3으로 가지 않는다)

4. 사용 예시

1번 나무꾼

hit = 0

while hit < 10:
	print("hello")

만약 위 코드를 실행한다면 영원히 반복될 것이다.
hit에 넣은 값이 10 미만이면 영원히 반복되는 코드다.

영원히 반복되지 않기 위해 수정해보자.

while hit < 10:
	hit = hit +1

hit의 값이 10 미만이면
hit의 값에 1을 더하는 것이다.
hit = 0 으로 상황을 주고 위 코드를 실행해보면
hit은 1로 변한 후 다시 맨 위의 조건문으로 돌아간다.
1은 10보다 작으니 조건문이 수행되고, hit은 2가 된 후 다시 조건문으로 돌아간다.
이렇게 1부터 10까지 나온 후
hit이 10이 되면 조건에 맞지 않아 실행이 되지 않는다.

이번에는 print 함수를 통해 특정 문장이 출력되게 해보자.

hit = 0

while hit < 10:
    hit = hit + 1
    print("나무를 {}번 찍었습니다.".format(hit))

(format함수 설명)

맨 밑줄은 "나무를 hit번 찍었습니다."를 출력하는 명령어다.

천천히 뜯어보자.

hit에 0을 넣었다.
while문을 보니 hit 값이 10보다 작아서 조건에 맞기 때문에 아래로 내려갔더니
hit에 1을 더한 걸 hit에 넣으라고 한다.
그래서 원래 0이었던 hit이 1이 되었다.
"나무를 1번 찍었습니다."가 출력됐다.

while 조건문이기 때문에 맨 처음으로 돌아간다.
현재 hit 값은 1이고, while문을 보니 여전히 10보다 작아서 조건에 맞기 때문에 아래로 내려간다.
hit에 1을 더하면 2. 이걸 hit에 넣어서 hit은 2가 되었다.
"나무를 2번 찍었습니다."가 출력됐다.

이런 식으로 반복하다 보면 아래 사진처럼 출력된다.

hit이 10이면 "나무가 쓰러졌습니다."가 나오는 코드를 만들어보자.

hit이 10이면 while문의 조건과 맞지 않아서
if문으로 넘어간다.
if문을 봤더니 hit이 10과 같으면 "나무가 쓰러졌습니다."를 출력하라고 한다.
코드를 돌리면 사진처럼 잘 출력되는 걸 확인할 수 있다.

2번 바리스타 (break 사용하기)

coffee = 10

while True:
	coffee = coffee -1

위 코드는 돌리면 안된다.
조건을 따로 안 주고 True라고 주면
상황이 어떻든 계속 맞는 조건이기 때문에 무한 반복된다.
coffee 값이 -999999999999 그 너머까지 계속 반복되는 코드다.

coffee = 10

while True:
	coffee = coffee -1
    print("커피를 팔고, {}잔 남았습니다.".format(coffee))
    if coffee == 0:
    	print("매진되었습니다.")

위의 코드는 나무꾼 코드와 비슷하지만
while문의 조건이 True기 때문에
실제로 돌리면

커피를 팔고, 9잔 남았습니다.
커피를 팔고, 8잔 남았습니다.
커피를 팔고, 7잔 남았습니다.
.
.
.
매진되었습니다.
커피를 팔고, -1잔 남았습니다.
커피를 팔고, -2잔 남았습니다.
.
.
.
(무한)

으로 값이 나온다.

0잔에서 멈추게 하려면 어떻게 하면 될까?
위에서 배운 break를 사용하면 된다.

coffee = 10

while True:
	coffee = coffee -1
    print("커피를 팔고, {}잔 남았습니다.".format(coffee))
    if coffee == 0:
    	print("매진되었습니다.")
        break

코드를 보지 않고 한 줄 한 줄 생각하면서 직접 작성해보면 이해와 실력이 향상된다.

3번 홀수 출력하기 (continue 사용하기)

a = 0 부터 시작해서
1부터 10 사이의 홀수만 나오게 하려면 어떻게 하면 될까?

a = 0

while a < 10:
    a = a + 1
    if a % 2 == 0:
        continue
    print(a)
  • a = 0
    a에 0을 넣었다.
  • while a < 10
    a 값이 10보다 작을 때만 아래 코드가 실행된다.
  • a = a + 1
    a에 1을 더하고 a에 넣어라.
  • if a % 2 == 0
    a를 2로 나눈 나머지가 0이라면 = a가 짝수라면
  • continue
    맨 위로 올라가서 다시 반복해라

위 코드를 반복하면
짝수일 때는 while문으로 다시 올라가고
홀수일 때는 a값이 출력이 된다.

참고로
a = a + 1은
a += 1이라고 작성해도 된다.


여기까지 파이썬 while 반복문에 대한 설명이었습니다.

수정이 필요한 부분이나 이해가 안 가는 부분이 있다면 언제든 말씀해주세요!^0^

다음 글에서는 실습 문제를 풀어볼게요.

그럼 이만
총총

profile
인공지능이 인공지능을 개발하면 인공지능일까

0개의 댓글

관련 채용 정보