3.5 실습: 흐름 제어 프로그램 작성 – 조건문과 반복문을 활용한 구구단 출력과 숫자 합계 계산
조건문과 반복문만 제대로 활용해도 복잡한 문제를 간단하게 해결할 수 있다는 사실, 알고 계셨나요? 구구단 출력, 숫자 누적 합계 등 실생활에서도 바로 쓸 수 있는 예제를 직접 만들어 보며 흐름 제어의 진짜 힘을 느껴보세요!
안녕하세요, 여러분! 오늘은 파이썬 초보자라면 반드시 한 번쯤 실습해봐야 할 조건문과 반복문 실습을 주제로 다뤄보려 합니다. 이번 주제는 단순히 문법을 익히는 수준이 아닌, 직접 코드를 작성하며 ‘흐름 제어’가 어떻게 동작하는지를 체감할 수 있도록 구성했어요. 예를 들어 구구단을 출력하거나, 사용자가 입력한 숫자들의 합계를 계산하는 등의 실습을 통해 조건과 반복의 개념이 머릿속에 자연스럽게 스며들도록 도와드립니다. 이런 간단한 예제들이 코딩 실력을 한 단계 업그레이드 시켜줄 중요한 디딤돌이 될 거예요!
목차
1. 조건문이란? 🤔
프로그래밍에서 가장 기본이 되면서도 중요한 것이 바로 조건문입니다. 우리 일상에서 "만약 비가 오면 우산을 챙긴다"와 같은 조건적 행동은 매우 자연스럽죠? 마찬가지로, 프로그램도 특정 조건이 참일 때만 어떤 일을 하게 만들 수 있습니다.
파이썬에서는 조건문을 if
, elif
, else
키워드를 사용해서 구현합니다. 조건에 따라 프로그램의 흐름이 달라지기 때문에, 프로그램의 '두뇌' 같은 역할을 한다고 볼 수 있어요.
조건문 기본 구조
score = 85
if score >= 90:
print("A학점")
elif score >= 80:
print("B학점")
else:
print("C학점 이하")
위 코드는 점수를 기준으로 A, B, C학점을 출력하는 예제입니다. 조건을 위에서부터 순차적으로 검사하면서 가장 먼저 맞는 조건에 도달하면 해당 블록의 코드가 실행되죠.
조건문 활용 팁 💡
- 조건은
True
혹은False
로 평가됩니다. -
elif
는 조건이 여러 개인 경우 유용하게 쓰입니다. -
else
는 위의 모든 조건이 거짓일 때 실행됩니다.
실습 아이디어 ✨
- 입력받은 숫자가 짝수인지 홀수인지 판별하기
- 나이에 따라 유아/청소년/성인 분류하기
- 점수에 따라 다른 문장을 출력하는 학점 출력기 만들기
조건문은 복잡한 흐름을 분기 처리하는 데 매우 중요한 역할을 합니다. 다음 섹션에서는 반복문을 통해 반복적인 작업을 어떻게 자동화할 수 있는지를 배워볼 거예요.
2. 반복문의 기초와 구조 🔁
조건문이 '선택'의 역할을 한다면, 반복문은 '반복'을 담당합니다. 동일한 작업을 여러 번 수행해야 할 때 반복문을 사용하면 코드가 훨씬 깔끔하고 효율적이 되죠.
파이썬에서는 주로 for
문과 while
문을 사용해 반복을 구현합니다. for
문은 정해진 횟수만큼 반복할 때, while
문은 조건이 참인 동안 반복할 때 적합해요.
반복문 구조 예제
for i in range(5):
print("안녕하세요", i+1, "번째 인사입니다.")
range(5)
는 0부터 4까지 총 5번 반복합니다. 즉, "안녕하세요" 문장이 5번 출력되는 거죠. 숫자를 1부터 시작하고 싶다면 i+1
처럼 표현하면 됩니다.
while문 예시 👇
count = 0
while count < 3:
print("반복 중입니다!", count)
count += 1
- while문은 조건을 먼저 평가하고, 조건이 참이면 블록을 실행합니다.
- 조건이 거짓이 되면 반복을 멈추므로,
count += 1
과 같은 종료 조건을 꼭 명시해야 해요!
반복문 사용 팁 💬
- 무한 루프 방지를 위해 종료 조건을 꼭 확인하세요.
- 중첩 반복문은 성능 저하의 원인이 될 수 있어요.
- 리스트, 문자열 등 순회 가능한 객체(iterable)와 자주 함께 사용됩니다.
이제 조건문과 반복문 모두 기초를 익혔다면, 다음 단계에서는 직접 구구단을 출력하는 프로그램을 만들어보며 두 개념을 동시에 실습해 볼 거예요!
3. 구구단 출력 프로그램 만들기 📊
자, 이제 본격적인 실습에 들어갑니다! 우리가 배운 조건문과 반복문을 이용해서 구구단을 출력해 볼 거예요. 이 실습은 반복문을 익히는 데 아주 좋은 훈련이고, 콘솔 출력에 익숙해지는 데도 도움이 돼요.
기본 구구단 출력 코드
for dan in range(2, 10):
print(f"--- {dan}단 ---")
for i in range(1, 10):
print(f"{dan} x {i} = {dan * i}")
print()
이 코드는 2단부터 9단까지
출력하는 구구단 전체 출력기입니다. for
문이 2중으로 사용되어 외부 반복은 단(dan), 내부 반복은 곱해지는 수(i)를 담당합니다.
사용자 입력 기반 구구단 출력 🎯
이번에는 사용자가 원하는 단만 출력하도록 프로그램을 수정해봅시다. 조건문을 활용해서 입력값을 검증하는 것도 함께 연습할 수 있어요.
dan = int(input("출력할 단을 입력하세요 (2~9): "))
if 2 <= dan <= 9:
for i in range(1, 10):
print(f"{dan} x {i} = {dan * i}")
else:
print("2부터 9 사이의 숫자만 입력해주세요.")
- 조건문을 통해 입력값의 유효성을 검증할 수 있습니다.
- 반복문을 통해 한 단의 구구단을 출력합니다.
실습 확장 아이디어 ✨
- 짝수 단만 출력해보기 (조건문과
continue
활용) - 거꾸로 출력하기 (range의 step 활용)
- 가로로 정렬된 구구단 출력에 도전하기 (문자열 포매팅 응용)
이번 실습을 통해 반복 구조와 조건 제어가 프로그램의 흐름을 얼마나 잘 조절할 수 있는지를 실감하셨을 거예요. 다음은 숫자 누적 합계를 계산하는 프로그램으로 실력을 더 키워볼 차례입니다!
4. 사용자 입력 기반 합계 계산 프로그램 🧮
이번에는 반복문과 조건문을 함께 활용해서 사용자가 입력한 숫자들의 합계를 구하는 프로그램을 만들어볼 거예요. 단순하지만 매우 실용적이고, 반복 처리와 조건 판단 능력을 동시에 테스트할 수 있는 좋은 예제입니다!
기본 합계 계산 코드
total = 0
for i in range(5):
num = int(input(f"{i+1}번째 숫자를 입력하세요: "))
total += num
print("입력한 숫자의 총합은:", total)
이 코드는 사용자가 숫자 5개를 입력하면 그 합계를 출력하는 방식이에요. 누적 변수 total을 활용해서 반복할 때마다 입력된 숫자를 더합니다.
입력 조건을 추가해보자 🎯
이제 입력값이 음수일 경우에는 더하지 않도록 조건을 걸어보는 것도 좋은 연습입니다.
total = 0
for i in range(5):
num = int(input(f"{i+1}번째 숫자를 입력하세요: "))
if num < 0:
print("음수는 더하지 않습니다.")
continue
total += num
print("양수만 더한 총합은:", total)
- continue문은 해당 반복을 건너뛰게 만듭니다.
- 조건문으로 음수를 걸러내고, 반복문으로 누적 계산하는 구조입니다.
실전 확장 아이디어 💡
- 사용자가 0을 입력하면 조기 종료하기 (
break
사용) - 입력받는 숫자의 개수를 사용자에게 먼저 받도록 하기
- 입력된 수 중 가장 큰 수 또는 평균값 계산하기
여기까지 따라오셨다면 반복문과 조건문을 활용한 프로그램 작성에 대한 감이 확실히 잡히셨을 거예요! 다음은 실습 중 가장 많이 하는 실수와, 이를 피하기 위한 팁들을 정리해드릴게요.
5. 실습 팁과 자주 하는 실수 💡
조건문과 반복문을 사용한 실습을 진행하다 보면, 누구나 한 번쯤 겪는 실수가 있어요. 이런 실수는 전혀 부끄러운 게 아닙니다! 오히려 그걸 알아차리고 고치는 과정에서 실력이 늘어요. 그래서 이번 장에서는 자주 발생하는 실수와 꿀팁들을 정리해볼게요.
자주 하는 실수 리스트 🧨
- IndentationError : 들여쓰기를 잘못하면 실행조차 안 돼요. 파이썬은 들여쓰기가 ‘문법’입니다.
- 반복문 안에
input()
을 잘못 넣어서 무한 입력에 빠지는 경우 - 조건을 잘못 써서 조건문이 항상 True 또는 False가 되는 경우
실습 꿀팁 모음 🧠
- 한 줄씩 출력해보고 출력 순서를 꼭 확인하세요.
print()
를 활용해 변수의 중간값을 자주 체크해보세요. 디버깅의 핵심이에요.range()
의 시작값, 끝값, step을 헷갈리지 않도록 조심하세요.
range() 이해도 테스트!
for i in range(10, 0, -2):
print(i)
이 코드는 10부터 1까지 2씩 감소하면서 출력돼요. range()
의 인자가 3개일 때는 시작, 종료, 증가값을 지정하는 겁니다.
이제 조건문과 반복문을 섞어서 활용하는 실전 예제로 넘어가 볼까요? 다음 섹션에서는 지금까지 배운 개념들을 종합해서 직접 작성해보는 흐름 제어 프로그램을 구성해봅니다. 기대되시죠? 😊
6. 실전 예제로 배우는 흐름 제어 요령 🚀
지금까지 조건문과 반복문의 개념을 이해하고, 구구단과 합계 계산 실습도 해봤죠? 이제는 실전에서 자주 쓰이는 흐름 제어 프로그램을 직접 구성해보는 시간입니다. 아래 예제는 조건문과 반복문을 자연스럽게 엮어 활용하는 연습이에요.
예제: 사용자 점수 입력받아 통계 내기 📊
사용자가 점수를 여러 개 입력하면, 프로그램은 입력값 중 평균, 최대, 최소값을 계산합니다. 입력 중 0을 입력하면 종료하도록 조건 제어도 넣어보죠.
scores = []
while True:
num = int(input("점수를 입력하세요 (종료는 0): "))
if num == 0:
break
if num < 0 or num > 100:
print("0~100 사이의 점수만 입력하세요.")
continue
scores.append(num)
if scores:
print("입력한 점수 개수:", len(scores))
print("평균 점수:", sum(scores) / len(scores))
print("최고 점수:", max(scores))
print("최저 점수:", min(scores))
else:
print("입력된 점수가 없습니다.")
여기서는 while True
를 사용해 무한 입력을 받고, break
로 탈출 조건을 걸었습니다. 또한 continue를 이용해 유효하지 않은 점수는 패스하고, append()
로 리스트에 유효 점수를 누적해요.
이 예제로 확인하는 흐름 제어 핵심
- 조건문: 유효성 검증, 종료 여부 판단
- 반복문: 사용자 입력 반복 처리
- 리스트 활용: 입력값 저장과 통계 처리
도전 과제 ✍️
- 짝수 점수만 평균 내기
- 90점 이상은 ‘우수’, 60점 미만은 ‘미달’로 분류해서 출력
- 점수 범위를 그래프로 그릴 수 있는 추가 기능 고민하기
실전 예제를 통해 조건문과 반복문, 그리고 리스트 활용까지 모두 섭렵했어요! 다음 단계에서는 이 흐름 제어 개념을 실생활 문제에 어떻게 적용할 수 있는지 마무리 정리해드릴게요.
마무리 🎯 지금이 바로 흐름 제어에 도전할 때!
지금까지 조건문과 반복문을 활용한 실습 예제를 통해 프로그래밍의 흐름을 제어하는 핵심 개념들을 하나씩 짚어봤습니다. 구구단 출력부터 사용자 입력 기반의 합계 계산, 그리고 평균·최댓값·최솟값을 구하는 프로그램까지! 우리가 배운 코드는 단순히 결과를 출력하는 데 그치지 않고, 실제 문제 해결에 바로 활용할 수 있는 훌륭한 도구가 됩니다.
"조건을 어떻게 나누느냐, 반복을 어떻게 설정하느냐에 따라 프로그램의 성격이 완전히 달라진다"
는 말, 실감하셨죠?😊 앞으로 더 복잡한 로직을 작성할 때도 이 기본 원리를 바탕으로 확장해나가면 됩니다.
자, 이제는 여러분 차례입니다. 오늘 배운 내용을 가지고 직접 새로운 실습 문제를 만들어 보세요! 아래는 추천 실습 키워드입니다.
- 숫자 맞추기 게임 (랜덤 숫자와 비교)
- 점수에 따라 등급 출력 프로그램
- 반복문으로 특정 패턴 출력 (삼각형, 피라미드 등)
배우고 끝내지 말고, 실습으로 체화하세요. 이제 여러분은 흐름 제어의 세계를 이해한 입문자가 아닌, 직접 제어할 수 있는 초보 프로그래머입니다. 다음 장에서는 반복문과 조건문의 조합을 한 단계 더 끌어올리는 ‘함수’ 개념으로 이어갈 준비를 해볼게요.