
1. 무한 루프란?
무한 루프(Infinite Loop)란 종료 조건이 없거나 조건이 항상 참(True)이어서 반복문이 무한히 실행되는 상태를 의미합니다. Python에서는 while 문을 활용하여 무한 루프를 쉽게 만들 수 있으며, 사용자 입력 대기, 서버 실행, 게임 루프, 실시간 데이터 처리 등의 다양한 실용적인 용도로 활용됩니다.
2. 무한 루프 생성 방법
무한 루프는 while True: 구문을 사용하여 만들 수 있습니다.
㉮ 기본적인 무한 루프
while True:
print("이 문장은 계속 실행됩니다")
• while 문의 조건이 항상 True이므로 반복이 중단되지 않음.
• 프로그램 강제 종료(CTRL + C) 또는 break 문을 사용해야 함.
3. 무한 루프 활용 사례
무한 루프는 단순히 끝없이 반복되는 것이 아니라, 특정한 종료 조건을 설정하여 루프를 제어할 수 있습니다.
㉮ 사용자 입력 대기 프로그램
사용자가 "exit"을 입력할 때까지 반복 실행되는 프로그램을 만들어보겠습니다.
while True:
command = input("명령을 입력하세요 ('exit' 입력시 종료): ")
if command.lower() == "exit": # 종료 조건
print("프로그램을 종료합니다")
break
print(f"입력한 명령: {command}")
출력예시
명령을 입력하세요 ('exit' 입력 시 종료): hello
입력한 명령: hello
명령을 입력하세요 ('exit' 입력 시 종료): python
입력한 명령: python
명령을 입력하세요 ('exit' 입력 시 종료): exit
프로그램을 종료합니다.
💡 break 문을 사용하여 "exit"을 입력하면 루프가 종료됩니다.
㉯ 비밀번호 인증 시스템
correct_password = "python123"
while True:
password = input("비밀번호를 입력하세요: ")
if password == correct_password:
print("접속 승인")
break # 비밀번호가 맞으면 루프 종료
else:
print("비밀번호가 틀렸습니다. 다시 입력하세요.")
출력예시
비밀번호를 입력하세요: wrongpass
비밀번호가 틀렸습니다. 다시 입력하세요.
비밀번호를 입력하세요: python123
접속 승인
㉰ ATM 시스템
ATM 기계에서 사용자가 0을 입력하기 전까지 계속 동작하는 시스템을 구현할 수 있습니다.
balance = 10000 # 초기 잔액
while True:
print("\n1. 입금")
print("2. 출금")
print("3. 잔액 조회")
print("0. 종료")
choice = input("원하는 작업을 선택하세요: ")
if choice == "1":
amount = int(input("입금할 금액을 입력하세요: "))
balance += amount
print(f"{amount}원이 입금되었습니다. 현재 잔액: {balance}원")
elif choice == "2":
amount = int(input("출금할 금액을 입력하세요: "))
if amount > balance:
print("잔액이 부족합니다.")
else:
balance -= amount
print(f"{amount}원이 출금되었습니다. 현재 잔액: {balance}원")
elif choice == "3":
print(f"현재 잔액: {balance}원")
elif choice == "0":
print("ATM을 종료합니다")
break # 종료 조건
else:
print("올바른 옵션을 선택하세요.")
출력예시
1. 입금
2. 출금
3. 잔액 조회
0. 종료
원하는 작업을 선택하세요: 1
입금할 금액을 입력하세요: 5000
5000원이 입금되었습니다. 현재 잔액: 15000원
...
원하는 작업을 선택하세요: 0
ATM을 종료합니다.
사용자가 0을 입력할 때까지 계속 실행되며, 입금, 출금, 잔액 조회 기능을 제공.
㉱ 서버 프로세스 (간단한 대기 프로그램)
서버는 일반적으로 무한 루프를 사용하여 클라이언트의 요청을 기다리는 구조로 동작합니다.
import time
while True:
print("서버가 요청을 대기 중입니다...")
time.sleep(5) # 5초마다 실행
출력예시
서버가 요청을 대기 중입니다...
(5초 대기)
서버가 요청을 대기 중입니다...
(5초 대기)
...
time.sleep(5)를 사용하여 CPU 사용량을 줄이며, 일정 시간 간격으로 실행 가능.
㉲ 게임 루프 구현 (간단한 숫자 맞추기 게임)
import random
secret_number = random.randint(1, 100) # 1~100 사이의 난수 생성
while True:
guess = int(input("숫자를 입력하세요 (0 입력 시 종료): "))
if guess == 0:
print("게임을 종료합니다.")
break
elif guess < secret_number:
print("너무 작습니다!")
elif guess > secret_number:
print("너무 큽니다!")
else:
print("정답입니다!")
break
출력예시
숫자를 입력하세요 (0 입력 시 종료): 50
너무 작습니다!
숫자를 입력하세요 (0 입력 시 종료): 75
너무 큽니다!
숫자를 입력하세요 (0 입력 시 종료): 62
정답입니다!
랜덤 숫자를 맞추는 간단한 게임으로, 0을 입력하면 종료됩니다.
4. 무한 루프 사용 시 주의할 점
1. 종료 조건을 반드시 설정해야 함
• break 문을 사용하여 특정 상황에서 루프를 종료해야 함.
• 예: while True:를 사용할 때 if 조건: break 추가.
2. CPU 과부하 방지
• 반복문이 너무 빠르게 실행되지 않도록 time.sleep()을 사용할 수도 있음.
import time
while True:
print("작업 수행 중...")
time.sleep(1) # 1초 대기
3. 입력 값 검증 필수
• 무한 루프에서 input()을 사용할 경우 올바른 입력인지 확인해야 함.
• 예: 숫자 입력을 받아야 하는 경우 try-except 활용.
5.요약
• 무한 루프는 while True: 문을 사용하여 생성하며, 종료 조건을 설정해야 안전하게 사용할 수 있음.
• 입력 대기 프로그램, ATM 시스템, 서버 대기 프로그램, 게임 루프 등 다양한 실용적인 사례에서 활용 가능.
• CPU 과부하를 방지하기 위해 time.sleep()을 활용할 수 있음.
• 종료 조건(break)을 명확히 설정하여 무한 루프를 효율적으로 제어하는 것이 중요.
'코딩교육 > Python 초등교육에서 전문가까지' 카테고리의 다른 글
2단계 : 4. 함수 (함수 정의와 호출 - def 키워드) (0) | 2025.03.17 |
---|---|
2단계 : 3. 반복문 (골든크로스 및 데드크로스를 활용한 주식 백테스팅 전략) (0) | 2025.03.16 |
2단계 : 3. 반복문 (break 와 continue의 사용 방법과 차이) (0) | 2025.03.07 |
2단계 : 3. 반복문 (중첩 반복문 활용) (0) | 2025.03.06 |
2단계 : 3. 반복문 (반복문의 필수 구성 요소 - range, 조건식, 종료 조건 등) (0) | 2025.03.05 |