본문 바로가기
파이썬/기초 학습

Day 2: 조건문 & 반복문 + 입력 처리

by CBROJIN 2025. 7. 21.

1) 학습 요약표

학습 내용 설명
조건문 if, elif, else, 중첩 if 문으로 분기 처리
반복문 for (range 활용), while (break, continue) 반복 처리
사용자 입력 input()으로 입력, strip()으로 공백 제거, isdigit()으로 숫자 검증
예외 처리 try-except를 사용해 입력 오류 처리
형변환 int(), float(), str()로 타입 변환
문자열 포맷팅 f-string, .format() 활용 출력
range() 반복 횟수 제어 및 인덱스 기반 순회
 

2) 이론 설명

(1) 조건문 (if, elif, else)

조건문은 프로그램의 흐름을 특정 조건에 따라 분기시키는 구조입니다.

동작 원리:

  • 조건식이 True인 경우 해당 블록 실행, False면 다음 분기 또는 종료.
  • elif는 여러 조건을 순차적으로 검사할 때 사용.
  • else는 모든 조건이 거짓일 때 실행.

예제 코드:

# 장비 상태 확인 예제
status = "up"
if status == "up":
    print("장비가 정상 동작 중입니다.")
elif status == "down":
    print("장비가 다운되었습니다. 점검이 필요합니다.")
else:
    print("장비 상태를 확인할 수 없습니다.")

줄 단위 설명:

  1. status 변수에 장비 상태 문자열 저장
  2. if로 상태가 up인지 확인 후 메시지 출력
  3. 상태가 down일 경우 elif 블록 실행
  4. 모든 조건이 해당되지 않으면 else 블록 실행

 

(2) 반복문 (for, while)

반복문은 동일한 작업을 여러 번 수행할 때 사용합니다.

for문 (range 사용):

  • range(start, stop, step)으로 반복 횟수 제어.
  • 주로 리스트 순회, 숫자 범위 반복에 사용.
# 1~5까지 반복 출력
for i in range(1, 6):
    print(f"장비 {i}번 점검 중...")

while문 (조건 기반):

  • 조건이 True일 때 반복.
  • break로 루프 종료, continue로 다음 반복으로 건너뜀.
# 패킷 수신 시뮬레이션
packet = 0
while packet < 3:
    packet += 1
    if packet == 2:
        continue  # 2번째 패킷은 건너뛰기
    print(f"패킷 {packet} 수신 완료")
 

(3) 사용자 입력 처리

기능:

  • input()으로 입력받고 strip()으로 공백 제거.
  • 숫자인지 확인할 때 isdigit() 사용.
  • 잘못된 입력은 try-except로 예외 처리.

예제 코드:

# 사용자에게 장비 수 입력받기
try:
    count = input("장비 개수를 입력하세요: ").strip()
    if not count.isdigit():
        raise ValueError("숫자가 아닙니다.")
    count = int(count)
    print(f"총 {count}대의 장비를 점검합니다.")
except ValueError as e:
    print(f"입력 오류: {e}")
  • isdigit()은 문자열이 오로지 숫자로만 이루어져 있는지 확인하는 문자열 메서드
 

(4) 문자열 포맷팅

f-string:

name = "Router"
ip = "192.168.1.1"
print(f"장비 {name}의 IP는 {ip}입니다.")

.format():

print("장비 {}의 IP는 {}입니다.".format(name, ip))
 

3) 기본 실습 과제

과제 1

문제 설명: 사용자로부터 장비 수를 입력받아, 각 장비 이름(Device1, Device2, ...)을 출력하세요. 입력값이 숫자가 아니면 오류 메시지를 출력해야 합니다.

 

 

과제 2

문제 설명: 사용자로부터 IP 주소를 입력받아, IP 주소가 192.로 시작하면 "내부망"을, 아니면 "외부망"을 출력하세요.

startswith()
문자열이 특정 접두사로 시작하는지 확인 (IP 주소, 특정 키워드 판별에 유용)
예: "192.168.0.1".startswith("192.") → True

endswith()
문자열이 특정 접미사로 끝나는지 확인 (파일 확장자 검사할 때 유용)
예: "data.csv".endswith(".csv") → True

과제 3

문제 설명: 1~5까지 반복하면서 짝수는 건너뛰고(continue), 홀수만 출력하세요.

 

과제 4

문제 설명: 사용자로부터 반복 횟수를 입력받고, "점검 중"이라는 문구를 입력한 횟수만큼 출력하세요.

 

과제 5

문제 설명: 장비 리스트 devices = ["R1", "R2", "SW1"]에서 모든 장비를 출력하고, 마지막 장비 출력 후 "모든 장비 점검 완료"를 출력하세요.

 

4) 심화 실습 과제

과제 1 (심화)

문제 설명: 장비 상태 리스트가 statuses = ["up", "down", "down", "up"]일 때, up인 장비 개수와 down인 장비 개수를 각각 출력하세요.

 

과제 2 (심화)

문제 설명: 사용자로부터 장비 이름과 상태(up 또는 down)를 3번 입력받아, 상태별로 딕셔너리에 저장한 후 출력하세요. (예: { "up": ["R1"], "down": ["SW1"] })

 

과제 3 (심화)

문제 설명: 사용자로부터 임의의 숫자를 입력받아, 1부터 입력한 숫자까지의 합을 구하고 출력하세요. (숫자가 아니면 오류 메시지 출력)