[포스코 신재생에너지 IoT 개발자 5기] Python 10편 — 반복문(while문)

Doohee·2025년 11월 27일
post-thumbnail

while 문은 조건식이 True인 동안 반복 실행되는 조건 기반 반복문으로, 반복 횟수가 정해져 있지 않은 상황에서 특히 유용하다.
사용자 입력 대기, 센서 모니터링, 장비 상태 확인, 서버의 지속 대기(loop) 등
종료 시점이 불확실한 작업을 처리할 때 가장 적합한 반복 구조이다.

또한 break, continue, while-else, 중첩 루프 등과 결합하면
보안·검증·데이터 수집·제어 로직을 견고하게 설계할 수 있다.

이번 문서에서는 while문의 기본 구조부터 제어문, 실습 문제,
그리고 실제 IoT·BEMS 환경에서 자주 사용되는 실무 패턴까지 함께 정리한다.

1. while문?

1) while문 이란?

  • while문은 조건이 True인 동안 루프 안의 코드를 반복 실행 하는 반복문이다.

  • 조건이 False가 되면 반복을 멈추고 루프를 빠져나온다.

  • 공식문서 정의

    • “The while statement is used for repeated execution as long as an expression is true.”

2) while문의 필요성

  • 반복 횟수가 정해지지 않았을 때

    • 예) 사용자가 exit를 입력할 때까지 계속 입력받기
  • 조건 기반 루프가 필요할 때

    • 파일이 존재하는 동안 반복 처리
  • 무한 루프 + 조건 분기

    • 게임 루프, 서버 대기 루프 등

3) while문과 for문 비교

  • for문은 반복 횟수가 명확한 경우 적합하고, while문은 조건 기반 반복에 적합하다.

while_1

2. while문 기본 문법

1) while문 실행 흐름

  • while문은 ‘조건 평가 → 코드 실행 → 조건 재평가’의 흐름을 반복하며, 조건이 False가 되면 루프가 종료된다.

while_2

2) 기본 문법

  • 조건식(Boolean 표현식): True일 동안 반복

  • 콜론(:): 코드 블록 시작

  • 들여쓰기: 반복 범위 지정

while_3

3) 기본 예시

while_4

4) while문 사용 시 주의점

  • 조건식 갱신 필수

  • 종료 조건을 명확히 정의

  • 입력 기반 루프에서는 적절한 예외 처리 필요

  • 루프가 길어질수록 시스템 리소스를 점유하므로 break 시점 설계가 중요하다.

while_5

실습1. while문 연습문제(1)

문제1) 비밀 코드 맞추기

  • 비밀 모임에 입장하려면 올바른 비밀 코드를 입력해야 합니다.

  • 변수 secret_code에는 "codingonre5"라는 문자열이 저장되어 있습니다.

  • 사용자에게 "비밀 코드를 입력하세요."라고 안내 문구를 출력합니다.

  • 사용자가 입력한 코드가 secret_code와 다를 경우 계속해서 다시 입력받습니다.

  • 코드가 맞으면 "입장이 허용되었습니다!"를 출력하고 프로그램을 종료합니다.

while_6

문제2) 업다운 게임

컴퓨터가 1부터 100 사이의 무작위 정수 하나를 미리 정해놓았습니다. 사용자는 이 수를 맞힐 때까지 계속해서 숫자를 입력해야 합니다.

  • 입력한 숫자가 정답보다 크면: "입력한 숫자보다는 작아요."

  • 입력한 숫자가 정답보다 작으면 "입력한 숫자보다는 커요."

  • 숫자를 맞히면: "{입력 횟수}번 만에 정답을 맞췄습니다." 라고 출력합니다.

while_7

3. 무한 루프(while True)와 종료 제어

1) 무한 루프

  • 조건이 항상 True ⇒ 무한 반복

  • 반드시 내부에서 break 필요

while_8

2) break문으로 루프 종료(1)

while_9

3) break문으로 루프 종료(2)

while_10

4) continue

while_11

5) while - else 구문

  • while 루프가 조건에 의해 정상 종료된 경우에만 else 블록이 실행되며, break로 종료된 경우에는 실행되지 않는다.

  • 실무에서는 주로 분기 로직이 break로 처리되기 때문에 else 사용 빈도는 비교적 낮다.

while_12

실습2. while문 연습문제(2)

문제1) 비밀 코드 맞추기(2)

비밀 모임에 입장하려면 올바른 비밀 코드를 입력해야 합니다.

정답을 입력할 때까지 무한히 반복되며, 정확한 코드를 입력하면 루프를 탈출합니다.

  • 변수 secret_code에는 "codingonre5"가 저장되어 있습니다.

  • 정답이 맞을 때까지 계속 입력을 받습니다.

  • 사용자의 입력이 정답과 일치하면 "입장완료! 환영합니다."를 출력하고 break로 루프를 종료하세요.

  • 정답이 틀렸다면 "비밀 코드가 틀렸습니다. 다시 시도하세요."를 출력한 후 루프를 계속 진행합니다.

while_13

문제2) 유효한 나이만 평균 내기

사용자에게 총 5명의 나이를 입력받아야 합니다. 유효한 나이들만 평균을 내어 출력하세요.

  • 변수 times는 유효한 입력의 개수를 셉니다.

  • 변수 sum_age는 나이의 합계를 저장합니다.

  • 나이는 정수로 입력받습니다.

  • 나이가 0 이하이거나 120보다 크면 무시하고 반복을 건너뜁니다.

  • 5개의 유효한 나이를 입력받으면 루프를 종료하고, 총합과 평균을 출력합니다.

while_14

4. 중첩 while

  • while문 안에 또 다른 while문을 포함하는 구조

  • 반복문 안에서 또 다른 반복이 필요할 때 사용

  • 중첩 while은 다차원 반복(예: 행렬 계산, 2D 센서 스캔)에 널리 쓰인다.

while_15

while_16

실습3. 중첩 while문 연습문제

문제1) 로그인 시스템 구현(1)

로그인 시스템을 만들고 있습니다. 순서대로 ID와 비밀번호를 입력받고, ID와 비밀번호 모두 맞으면 로그인 성공 메시지를 출력하세요.

  • 임의의 ID와 비밀번호를 세팅합니다.

  • 잘못된 ID일 경우 "ID가 존재하지 않습니다."를 출력하고 다시 ID를 입력받습니다.

  • ID가 맞으면 비밀번호를 입력받고, 비밀번호가 틀리면 "비밀번호가 틀렸습니다."를 출력하고 다시 입력받습니다.

  • 둘 다 맞으면 "로그인 성공!"을 출력하고 프로그램을 종료합니다.

while_17

문제2) 로그인 시스템 구현(2)

  • 임의의 ID와 비밀번호를 세팅합니다.

  • 중첩 while문 사용

  • break, continue 사용할 것

while_18

5. 실무 예시

1) 센서 안정 구간 대기 루프

  • 센서 값이 특정 안정 구간에 들어올 때까지 반복 대기함.

while_19

✔ 사용 사례

  • 외기온도 안정 시 냉난방 장비 자동 가동

  • 태양광 인버터 부팅 전 전압 안정 확인

  • 공조기 pre-heat 구간 확인

2) 장비 재시도(Re-Try) 루프

  • 설비 제어 신호가 실패하면 일정 횟수까지 재시도

while_20

✔ 사용 사례

  • EMS / BEMS 제어 명령 재시도

  • 통신 지연 / 끊김 시 복구 루프

  • API 기반 외부 시스템 요청 실패 시 재시도

3) 시간 기반 폴링 루프

  • 정해진 간격마다 센서 값을 읽는 구조

while_21

✔ 사용 사례

  • 1~5초 단위 실시간 전력 모니터링

  • 설비 운전 상태 폴링

  • 냉난방 장비 효율 모니터링(시계열 데이터 생성)

6. while문 한눈에 보기

1) while문 핵심 개념

  • 조건식이 True인 동안 반복 실행

  • 반복 종료 시점은 조건식이 False가 되거나 break 실행 시

2) while문의 실행 흐름

  • 조건 평가 → 코드 실행 → 조건 재평가

  • 조건 갱신이 없으면 무한 루프 발생

3) 필수 제어문

  • break: 즉시 반복 종료

  • continue: 아래 코드 건너뛰고 다음 반복으로 이동

  • while–else: 정상 종료 시에만 else 실행 (break 사용 시 X)

4) 중첩 while

  • 반복 안에 또 반복

  • 구구단, 2D 데이터 처리, 다중 루프 패턴에서 사용

5) 사용하기 좋은 상황

  • 반복 횟수가 사전에 정해지지 않은 경우

  • 입력이나 센서값, 이벤트 기반의 반복

  • 서버·장비의 대기 루프 구조

6) 실무 패턴(3개)

  • 센서 안정 구간 대기 루프 — 조건 충족될 때까지 대기

  • 재시도 루프(Retry Loop) — 명령·통신 실패 시 일정 횟수 재시도

  • 시간 기반 폴링 루프(Polling) — 일정 간격으로 값 읽어오기

7. 아웃트로 - while문은 "조건 반복의 기본기"

while문은 단순하지만 실제 시스템에서는 매우 자주 등장한다.
센서 데이터 안정 구간 대기, 반복 입력 검증, 장비 재시도, 실시간 폴링처럼

조건 충족 여부에 따라 반복이 유동적으로 결정되는 모든 상황에서 핵심 도구가 된다.

이번 챕터를 통해 조건 기반 반복 흐름을 이해했다면,

이후 for문, 예외 처리, 데이터 수집/제어 로직을 다룰 때 훨씬 더 자연스러워질 것이다.

while문은 단순한 반복문을 넘어, 조건 기반 제어 흐름의 핵심 요소이며 다양한 자동화·모니터링 시스템의 기반 구조가 된다.

profile
에너지 기획 전문가로 성장하고자 합니다.

0개의 댓글