본문 바로가기
코딩교육/Python 초등교육에서 전문가까지

2단계 : 3. 반복문 (무한 루프와 그 활용 사례)

by 제리토리 2025. 3. 8.
728x90
반응형

 

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)을 명확히 설정하여 무한 루프를 효율적으로 제어하는 것이 중요.

 

 

728x90
반응형