반복문 — 반복 업무를 자동화하기
거래처가 1,000개라도 코드는 몇 줄이면 충분합니다.
for · while · range() · 리스트 활용법을 배우고, 누적 계산과 조건 판단을 결합해 본격적인 업무 자동화 프로그램을 만들어 봅니다.
학습 목표
수업이 끝나면 다음을 할 수 있어야 합니다.
for 문의 구조를 이해한다range()를 사용할 수 있다for를 함께 사용할 수 있다while 문을 사용할 수 있다break와 continue를 사용할 수 있다반복문이 왜 필요한가? & for 기본 구조
같은 내용을 5번 출력한다고 가정해 봅시다.
print("안녕하세요.") print("안녕하세요.") print("안녕하세요.") print("안녕하세요.") print("안녕하세요.")
for i in range(5): print("안녕하세요.")
만약 거래처 1,000개를 처리해야 한다면 반복문 없이는 불가능합니다. 컴퓨터에게 반복 작업을 지시하는 것이 자동화의 시작입니다.
for 변수 in 반복할_데이터: 실행할_코드
range()의 이해
range()는 숫자의 범위를 만들어주는 기능입니다.
0부터 5개의 숫자를 만듭니다.
1부터 11 '전'까지 (즉, 10까지) 만듭니다.
range(시작, 끝) 구조에서 끝 숫자는 생성되지 않습니다. range(1, 11)은 10까지만 나옵니다.
for i in range(5): print(i)
0 1 2 3 4
변수 i는 반복할 때마다 차례대로 값이 변합니다. (첫 번째: i=0, 두 번째: i=1 ...)
누적 계산 (합계 구하기)
반복문을 이용하면 1부터 100까지의 합을 쉽게 구할 수 있습니다. 이것을 **누적 계산**이라고 합니다.
total = 0 # 합계를 저장할 변수를 먼저 0으로 만듭니다. for i in range(1, 101): total = total + i print(total)
5050
total = total + 값 이 패턴은 회계 데이터에서 거래금액 합계, 매출 합계, 비용 합계 등을 계산할 때 항상 사용됩니다.
반복문과 조건문 결합
3단계에서 배운 조건문(if)을 반복문 안에 넣습니다. "여러 데이터를 확인하며 조건에 맞는 것만 골라 처리"할 수 있습니다.
for i in range(1, 11): if i % 2 == 0: print(i)
2 4 6 8 10
for i in range(1, 11): if i % 2 != 0: print(i)
1 3 5 7 9
이 구조가 실제 데이터 자동화 알고리즘의 뼈대입니다.
리스트와 반복문
리스트(List)는 여러 데이터를 한 줄에 저장하는 방법입니다. (5단계에서 자세히 다룹니다)
리스트 안의 데이터를 반복문으로 하나씩 쉽게 꺼낼 수 있습니다. 이것이 엑셀의 여러 행을 처리하는 기본 원리입니다.
customers = ["ABC상사", "DEF기업", "GHI상사"] for customer in customers: print(customer)
ABC상사 DEF기업 GHI상사
거래금액 합계 구하기 (누적 계산)
amounts = [1000000, 2500000, 5000000] total = 0 for amount in amounts: total = total + amount print(f"총 거래금액: {total:,}원")
총 거래금액: 8,500,000원
일정 금액 이상만 찾기 (조건 결합)
amounts = [1000000, 2500000, 15000000, 5000000, 30000000] for amount in amounts: if amount >= 10000000: print(f"고액 거래: {amount:,}원")
고액 거래: 15,000,000원 고액 거래: 30,000,000원
거래처와 금액 함께 처리하기 (리스트 안의 리스트)
실무에서는 데이터가 보통 표 형태입니다. 거래처명과 금액을 같이 리스트로 묶어봅시다.
customers = [ ["ABC상사", 1000000], ["DEF기업", 25000000], ["GHI상사", 5000000] ] for customer in customers: name = customer[0] # 리스트의 첫 번째 항목 (이름) amount = customer[1] # 리스트의 두 번째 항목 (금액) print(f"{name}: {amount:,}원")
ABC상사: 1,000,000원 DEF기업: 25,000,000원 GHI상사: 5,000,000원
이것을 활용해 거래처별 검토 대상 판단을 할 수 있습니다.
for customer in customers: name = customer[0] amount = customer[1] if amount >= 10000000: print(f"{name} → 고액 거래") else: print(f"{name} → 일반 거래")
ABC상사 → 일반 거래 DEF기업 → 고액 거래 GHI상사 → 일반 거래
이제 수천 개의 거래처 리스트가 있어도 코드는 바뀌지 않습니다! 자동으로 모두 판단해냅니다.
while 반복문
for는 반복할 횟수나 데이터가 정해져 있을 때 주로 사용합니다.
while은 조건이 참인 동안 계속 반복할 때 사용합니다.
while 조건: 실행할 코드
count = 1 while count <= 5: print(count) count = count + 1 # 조건이 끝날 수 있도록 변수를 변경해줘야 함
1 2 3 4 5
무한 반복 주의와 break / continue
count = 1 while count <= 5: print(count) # count 값이 영원히 1이므로 무한 반복됨! 컴퓨터가 멈출 수 있습니다.
break (반복 종료) 와 continue (건너뛰기)
for i in range(1, 11): if i == 5: break print(i)
1 2 3 4
5가 되는 순간 반복을 아예 끝냅니다.
for i in range(1, 6): if i == 3: continue print(i)
1 2 4 5
3만 출력하지 않고 다음으로 넘어갔습니다.
while과 break를 이용한 사용자 입력 무한 반복
사용자가 "끝"이라고 할 때까지 계속 입력을 받는 구조입니다.
while True: customer = input("거래처명(종료하려면 '끝'): ") if customer == "끝": break amount = int(input("거래금액: ")) if amount >= 10000000: print("고액 거래") else: print("일반 거래")
이 코드를 실행하면 사용자가 '끝'을 입력할 때까지 계속해서 거래처와 금액을 확인하고 검토해 줍니다!
실습 — 데이터 분석 기본기 다지기
len()은 리스트 안의 데이터 개수를 알려줍니다.
amounts = [1000000, 2500000, 5000000, 8000000, 12000000] total = 0 for amount in amounts: total = total + amount average = total / len(amounts) print(f"총 거래금액: {total:,}원") print(f"평균 거래금액: {average:,.0f}원")
1천만원 이상인 거래의 건수만 세어봅니다.
amounts = [1000000, 25000000, 5000000, 80000000, 12000000] count = 0 # 건수를 저장할 변수 for amount in amounts: if amount >= 10000000: count = count + 1 # 조건에 맞을 때마다 1씩 증가시킴 print(f"고액 거래 건수: {count}건")
고액 거래 건수: 3건
위 2개의 실습에서 배운 누적합계(total = total + 값)와 누적건수(count = count + 1)는 회계/통계 데이터 처리의 가장 핵심적인 패턴입니다. 무조건 몸에 익혀야 합니다.
4단계 최종 프로젝트 — 거래처 자동 분석기
지금까지 배운 모든 것(데이터 묶음, 반복 추출, 조건 판단, 누적 계산, 건수 계산)을 합쳐서 실전 자동화 스크립트를 만듭니다.
customers = [ ["ABC상사", 5000000], ["DEF기업", 15000000], ["GHI상사", 80000000], ["JKL기업", 3000000], ["MNO상사", 25000000] ] total = 0 high_count = 0 print("===== 거래처 분석 =====") for customer in customers: name = customer[0] amount = customer[1] total = total + amount # 누적 합계 if amount >= 10000000: high_count = high_count + 1 # 누적 건수 print(f"고액 거래 → {name}: {amount:,}원") average = total / len(customers) print() print(f"전체 거래금액: {total:,}원") print(f"평균 거래금액: {average:,.0f}원") print(f"고액 거래 건수: {high_count}건")
이 코드가 완성되면, 학생들은 데이터 5개가 아니라 50,000개가 들어와도 1초 만에 분석 리포트를 찍어내는 업무 자동화의 위력을 경험하게 됩니다.
반드시 외워야 할 핵심 패턴 5가지
앞으로 데이터 분석과 자동화에서 평생 쓰게 될 5가지 패턴입니다.
for i in range(10):
print(i)
for item in items:
print(item)
for item in items:
if 조건:
처리
total = 0
for item in items:
total = total + item
count = 0
for item in items:
if 조건:
count = count + 1
초보자 흔한 실수
1부터 10까지 출력하고 싶을 때 발생하는 실수입니다.
for i in range(1, 10): # 9까지만 나옴!
for i in range(1, 11): # 정답!
for i in range(5): print(i) # IndentationError
for i in range(5): print(i) # 정상 작동
count = 1 while count <= 5: print(count) # 끝이 안 남
count = 1 while count <= 5: print(count) count = count + 1 # 변수 변경 필수
4단계 과제
1. 1부터 100까지 합계 구하기
for문을 사용하여 1+2+3...+100 의 결과를 구하세요.
2. 짝수 합계 구하기
1부터 100까지 중 짝수만 골라서 더하세요. (if i % 2 == 0: 활용)
다음 데이터를 이용해 5가지 통계를 계산하세요.
amounts = [5000000, 12000000, 3500000, 25000000, 70000000, 8000000, 15000000]
- 총 거래금액
- 평균 거래금액
- 전체 거래 건수 (
len()) - 1천만원 이상 거래 건수
- 1천만원 이상 거래금액 합계
강의에 나온 customers 이중 리스트를 사용하여 거래처 분석 프로그램(최종 프로젝트와 유사한 형태)을 스스로 처음부터 끝까지 코딩해 보세요.
1~4단계의 발전 과정과 다음 단계
지금까지 배운 내용의 흐름을 되짚어보면 우리가 어떻게 자동화로 나아가고 있는지 명확히 알 수 있습니다.
print()변수 + 자료형 + input()if / elif / elsefor / while지금까지는 ["ABC상사", 5000000] 처럼 단순히 순서대로 저장했습니다.
5단계에서는 {"이름": "ABC상사", "금액": 5000000, "구분": "일반"} 처럼 데이터를 체계적(구조적)으로 저장하고 꺼내는 법을 배웁니다. 이것이 나중에 엑셀 파일을 읽어올 때 쓰는 가장 핵심적인 형태입니다.