
while 문은 조건식이 True인 동안 반복 실행되는 조건 기반 반복문으로, 반복 횟수가 정해져 있지 않은 상황에서 특히 유용하다.
사용자 입력 대기, 센서 모니터링, 장비 상태 확인, 서버의 지속 대기(loop) 등
종료 시점이 불확실한 작업을 처리할 때 가장 적합한 반복 구조이다.
또한 break, continue, while-else, 중첩 루프 등과 결합하면
보안·검증·데이터 수집·제어 로직을 견고하게 설계할 수 있다.
이번 문서에서는 while문의 기본 구조부터 제어문, 실습 문제,
그리고 실제 IoT·BEMS 환경에서 자주 사용되는 실무 패턴까지 함께 정리한다.
1.
while문?
while문 이란?while문은 조건이 True인 동안 루프 안의 코드를 반복 실행 하는 반복문이다.
조건이 False가 되면 반복을 멈추고 루프를 빠져나온다.
공식문서 정의
while문의 필요성반복 횟수가 정해지지 않았을 때
exit를 입력할 때까지 계속 입력받기조건 기반 루프가 필요할 때
무한 루프 + 조건 분기
while문과 for문 비교for문은 반복 횟수가 명확한 경우 적합하고, while문은 조건 기반 반복에 적합하다.
2.
while문 기본 문법
while문 실행 흐름while문은 ‘조건 평가 → 코드 실행 → 조건 재평가’의 흐름을 반복하며, 조건이 False가 되면 루프가 종료된다.
조건식(Boolean 표현식): True일 동안 반복
콜론(:): 코드 블록 시작
들여쓰기: 반복 범위 지정


while문 사용 시 주의점조건식 갱신 필수
종료 조건을 명확히 정의
입력 기반 루프에서는 적절한 예외 처리 필요
루프가 길어질수록 시스템 리소스를 점유하므로 break 시점 설계가 중요하다.

실습1.
while문 연습문제(1)
비밀 모임에 입장하려면 올바른 비밀 코드를 입력해야 합니다.
변수 secret_code에는 "codingonre5"라는 문자열이 저장되어 있습니다.
사용자에게 "비밀 코드를 입력하세요."라고 안내 문구를 출력합니다.
사용자가 입력한 코드가 secret_code와 다를 경우 계속해서 다시 입력받습니다.
코드가 맞으면 "입장이 허용되었습니다!"를 출력하고 프로그램을 종료합니다.

컴퓨터가 1부터 100 사이의 무작위 정수 하나를 미리 정해놓았습니다. 사용자는 이 수를 맞힐 때까지 계속해서 숫자를 입력해야 합니다.
입력한 숫자가 정답보다 크면: "입력한 숫자보다는 작아요."
입력한 숫자가 정답보다 작으면 "입력한 숫자보다는 커요."
숫자를 맞히면: "{입력 횟수}번 만에 정답을 맞췄습니다." 라고 출력합니다.

3. 무한 루프(
while True)와 종료 제어
조건이 항상 True ⇒ 무한 반복
반드시 내부에서 break 필요

break문으로 루프 종료(1)
break문으로 루프 종료(2)
continue
while - else 구문while 루프가 조건에 의해 정상 종료된 경우에만 else 블록이 실행되며, break로 종료된 경우에는 실행되지 않는다.
실무에서는 주로 분기 로직이 break로 처리되기 때문에 else 사용 빈도는 비교적 낮다.

실습2.
while문 연습문제(2)
비밀 모임에 입장하려면 올바른 비밀 코드를 입력해야 합니다.
정답을 입력할 때까지 무한히 반복되며, 정확한 코드를 입력하면 루프를 탈출합니다.
변수 secret_code에는 "codingonre5"가 저장되어 있습니다.
정답이 맞을 때까지 계속 입력을 받습니다.
사용자의 입력이 정답과 일치하면 "입장완료! 환영합니다."를 출력하고 break로 루프를 종료하세요.
정답이 틀렸다면 "비밀 코드가 틀렸습니다. 다시 시도하세요."를 출력한 후 루프를 계속 진행합니다.

사용자에게 총 5명의 나이를 입력받아야 합니다. 유효한 나이들만 평균을 내어 출력하세요.
변수 times는 유효한 입력의 개수를 셉니다.
변수 sum_age는 나이의 합계를 저장합니다.
나이는 정수로 입력받습니다.
나이가 0 이하이거나 120보다 크면 무시하고 반복을 건너뜁니다.
5개의 유효한 나이를 입력받으면 루프를 종료하고, 총합과 평균을 출력합니다.

4. 중첩
while문
while문 안에 또 다른 while문을 포함하는 구조
반복문 안에서 또 다른 반복이 필요할 때 사용
중첩 while은 다차원 반복(예: 행렬 계산, 2D 센서 스캔)에 널리 쓰인다.


실습3. 중첩
while문 연습문제
로그인 시스템을 만들고 있습니다. 순서대로 ID와 비밀번호를 입력받고, ID와 비밀번호 모두 맞으면 로그인 성공 메시지를 출력하세요.
임의의 ID와 비밀번호를 세팅합니다.
잘못된 ID일 경우 "ID가 존재하지 않습니다."를 출력하고 다시 ID를 입력받습니다.
ID가 맞으면 비밀번호를 입력받고, 비밀번호가 틀리면 "비밀번호가 틀렸습니다."를 출력하고 다시 입력받습니다.
둘 다 맞으면 "로그인 성공!"을 출력하고 프로그램을 종료합니다.

임의의 ID와 비밀번호를 세팅합니다.
중첩 while문 사용
break, continue 사용할 것

5. 실무 예시

외기온도 안정 시 냉난방 장비 자동 가동
태양광 인버터 부팅 전 전압 안정 확인
공조기 pre-heat 구간 확인

EMS / BEMS 제어 명령 재시도
통신 지연 / 끊김 시 복구 루프
API 기반 외부 시스템 요청 실패 시 재시도

1~5초 단위 실시간 전력 모니터링
설비 운전 상태 폴링
냉난방 장비 효율 모니터링(시계열 데이터 생성)
6.
while문 한눈에 보기
조건식이 True인 동안 반복 실행
반복 종료 시점은 조건식이 False가 되거나 break 실행 시
조건 평가 → 코드 실행 → 조건 재평가
조건 갱신이 없으면 무한 루프 발생
break: 즉시 반복 종료
continue: 아래 코드 건너뛰고 다음 반복으로 이동
while–else: 정상 종료 시에만 else 실행 (break 사용 시 X)
반복 안에 또 반복
구구단, 2D 데이터 처리, 다중 루프 패턴에서 사용
반복 횟수가 사전에 정해지지 않은 경우
입력이나 센서값, 이벤트 기반의 반복
서버·장비의 대기 루프 구조
센서 안정 구간 대기 루프 — 조건 충족될 때까지 대기
재시도 루프(Retry Loop) — 명령·통신 실패 시 일정 횟수 재시도
시간 기반 폴링 루프(Polling) — 일정 간격으로 값 읽어오기
7. 아웃트로 -
while문은 "조건 반복의 기본기"
while문은 단순하지만 실제 시스템에서는 매우 자주 등장한다.
센서 데이터 안정 구간 대기, 반복 입력 검증, 장비 재시도, 실시간 폴링처럼
조건 충족 여부에 따라 반복이 유동적으로 결정되는 모든 상황에서 핵심 도구가 된다.
이번 챕터를 통해 조건 기반 반복 흐름을 이해했다면,
이후 for문, 예외 처리, 데이터 수집/제어 로직을 다룰 때 훨씬 더 자연스러워질 것이다.
while문은 단순한 반복문을 넘어, 조건 기반 제어 흐름의 핵심 요소이며 다양한 자동화·모니터링 시스템의 기반 구조가 된다.