소개
이 실습에서는 파이썬의 핵심 제어 구조인 조건문과 반복문을 살펴봅니다. 이전 실습에서 익힌 지식을 바탕으로 if-else 문, for 루프, while 루프를 사용하여 프로그램의 흐름을 제어하는 방법을 배우게 됩니다. 이러한 실무 경험을 통해 파이썬의 핵심 개념에 대한 이해를 높이고, 더 복잡하고 동적인 프로그램을 작성할 수 있는 기초를 다질 수 있습니다.
조건문 이해하기
이번 단계에서는 파이썬의 조건문, 특히 if-else 구조에 대해 알아봅니다.
터미널에 다음 명령어를 입력하여 파이썬 인터프리터를 실행하세요.
python
파이썬 프롬프트 (>>>) 가 나타나면 파이썬 대화형 쉘에 성공적으로 진입한 것입니다.

먼저 간단한 if 문부터 시작해 보겠습니다. 파이썬 인터프리터에 다음 내용을 입력하세요.
age = 20
if age >= 18:
print("You are an adult.")
출력 결과:
You are an adult.
팁: 파이썬에서는 들여쓰기가 매우 중요하므로 주의해야 합니다. 들여쓰기에는 공백 4 칸을 사용하는 것이 권장됩니다.
if 문은 age >= 18이라는 조건이 참인지 확인합니다. 조건이 참이면 들여쓰기 된 코드 블록이 실행됩니다.
이제 else 절을 추가해 보겠습니다.
age = 15
if age >= 18:
print("You are an adult.")
else:
print("You are a minor.")
출력 결과:
You are a minor.
else 절은 조건이 거짓일 때 실행할 대안적인 동작을 제공합니다.
더 복잡한 조건을 처리하기 위해 elif(else if) 절을 사용할 수 있습니다.
age = 65
if age < 13:
print("You are a child.")
elif age < 20:
print("You are a teenager.")
elif age < 65:
print("You are an adult.")
else:
print("You are a senior citizen.")
출력 결과:
You are a senior citizen.
elif 절을 사용하면 여러 조건을 순차적으로 확인할 수 있습니다.
다시 한번 강조하지만, 파이썬에서 들여쓰기는 필수입니다. 들여쓰기가 각 조건에 연결된 코드 블록을 정의하기 때문입니다.
For 루프 살펴보기
이번 단계에서는 리스트, 문자열, 범위 (range) 와 같은 시퀀스 데이터를 반복 처리할 때 사용하는 "for" 루프에 대해 배웁니다.
먼저 range 를 사용한 간단한 for 루프를 실행해 보겠습니다. 파이썬 인터프리터에 입력하세요.
for i in range(5):
print(i)
출력 결과:
0
1
2
3
4
range(5) 함수는 0 부터 4 까지의 숫자 시퀀스를 생성하며, 루프는 각 숫자를 하나씩 순회합니다.
range() 함수는 시작값, 종료값, 증감값을 지정하기 위해 여러 인자를 받을 수 있습니다. 다른 범위를 시도해 봅시다.
for i in range(1, 10, 2):
print(i)
출력 결과:
1
3
5
7
9
range(1, 10, 2)함수는 1 부터 시작하여 10 미만까지 2 씩 증가하는 숫자 시퀀스를 생성합니다.
이번에는 리스트를 순회해 보겠습니다.
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(f"I like {fruit}")
출력 결과:
I like apple
I like banana
I like cherry
여기서 루프는 fruits 리스트의 각 항목을 순차적으로 가져옵니다.
문자열에도 for 루프를 사용할 수 있습니다.
for char in "Python":
print(char.upper())
출력 결과:
P
Y
T
H
O
N
이 루프는 "Python"이라는 문자열의 각 문자를 하나씩 순회합니다.
"for" 루프와 조건문을 결합해 보겠습니다.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for num in numbers:
if num % 2 == 0:
print(f"{num} is even")
else:
print(f"{num} is odd")
출력 결과:
1 is odd
2 is even
3 is odd
4 is even
5 is odd
6 is even
7 is odd
8 is even
9 is odd
10 is even
이 루프는 리스트의 각 숫자를 확인하여 짝수인지 홀수인지 출력합니다.
나머지 연산자 (
%) 이해하기:%기호는 나머지 연산자라고 불립니다. 한 숫자를 다른 숫자로 나눴을 때 남는 나머지를 반환합니다. 예를 들어:
5 % 2는1입니다 (5 를 2 로 나누면 몫이 2 이고 나머지가 1 이기 때문).4 % 2는0입니다 (4 를 2 로 나누면 나머지가 없기 때문).10 % 3은1입니다 (10 을 3 으로 나누면 몫이 3 이고 나머지가 1 이기 때문).
num % 2 == 0이라고 확인하는 것은 "이 숫자를 2 로 나눴을 때 나머지가 0 인가?"라고 묻는 것과 같습니다. 만약 그렇다면 (나머지가 0 이면) 그 숫자는 짝수입니다. 나머지가 1 이면 홀수입니다.==는 두 값이 같은지 확인하는 비교 연산자로, 같으면True, 다르면False를 반환합니다.
While 루프 이해하기
이번 단계에서는 조건이 참인 동안 코드 블록을 계속해서 반복하는 "while" 루프에 대해 배웁니다.
간단한 "while" 루프부터 시작해 보겠습니다. 파이썬 인터프리터에 입력하세요.
count = 0
while count < 5:
print(count)
count += 1
출력 결과:
0
1
2
3
4
이 루프는 count가 5 보다 작은 동안 계속 실행됩니다.
"While" 루프는 반복 횟수를 미리 알 수 없을 때 자주 사용됩니다. 다음은 그 예시입니다.
import random
number = random.randint(1, 10)
guess = 0
while guess != number:
guess = int(input("Guess a number between 1 and 10: "))
if guess < number:
print("Too low!")
elif guess > number:
print("Too high!")
else:
print(f"Congratulations! You guessed the number {number}!")
이 코드는 사용자가 정답을 맞힐 때까지 계속 숫자를 입력받는 간단한 숫자 맞히기 게임을 만듭니다. 사용자의 입력이 정답과 일치하면 else 절이 실행되어 축하 메시지를 표시합니다.
"while" 루프를 사용할 때는 주의가 필요합니다. 조건이 결코 거짓이 되지 않으면 무한 루프에 빠지게 됩니다. 예시를 확인해 보세요 (실제로 실행하지는 마세요).
while True:
print("This will print forever!")
실수로 무한 루프를 실행했다면 Ctrl+C 를 눌러 중단할 수 있습니다.
break 문을 사용하면 루프를 도중에 빠져나올 수 있습니다.
count = 0
while True:
print(count)
count += 1
if count >= 5:
break
출력 결과:
0
1
2
3
4
이 루프는 원래 무한히 실행되어야 하지만, count가 5 에 도달했을 때 break 문이 작동하여 루프를 종료합니다.
중첩 루프와 루프 제어문
이번 단계에서는 중첩 루프와 추가적인 루프 제어문에 대해 배웁니다.
중첩 루프는 루프 안에 또 다른 루프가 들어있는 구조입니다. 다음은 중첩 for 루프의 예시입니다.
for i in range(3):
for j in range(2):
print(f"i: {i}, j: {j}")
출력 결과:
i: 0, j: 0
i: 0, j: 1
i: 1, j: 0
i: 1, j: 1
i: 2, j: 0
i: 2, j: 1
바깥쪽 루프가 한 번 반복될 때마다 안쪽 루프는 정해진 횟수만큼 모든 반복을 완료합니다.
break 외에도 파이썬은 continue 문을 제공합니다. continue는 현재 반복의 남은 코드를 건너뛰고 즉시 다음 반복으로 넘어갑니다.
for num in range(10):
if num % 2 == 0:
continue
print(num)
출력 결과:
1
3
5
7
9
이 루프는 짝수일 때 출력을 건너뛰므로 홀수만 출력하게 됩니다.
이 문맥에서의 나머지 연산자 이해: 여기서
num % 2 == 0은 숫자가 짝수인지 (2 로 나눴을 때 나머지가 0 인지) 확인합니다. 이 조건이True이면 (짝수이면),continue문이 실행되어print(num)줄을 건너뛰고 다음 숫자로 넘어갑니다. 결과적으로num % 2가 1 인 홀수들만print(num)문에 도달하게 됩니다.
루프에도 else 절을 사용할 수 있습니다. 루프가 break를 만나지 않고 정상적으로 끝까지 실행되었을 때 else 블록이 실행됩니다.
for num in range(2, 10):
for i in range(2, num):
if num % i == 0:
print(f"{num} is not prime")
break
else:
print(f"{num} is prime")
출력 결과:
2 is prime
3 is prime
4 is not prime
5 is prime
6 is not prime
7 is prime
8 is not prime
9 is not prime
이 중첩 루프는 소수 (prime number) 를 판별합니다. 안쪽 루프에서 나누어떨어지는 수를 찾지 못해 break가 호출되지 않았을 때만 else 절이 실행되어 해당 숫자가 소수임을 알립니다.
종합 실습
마지막 단계에서는 지금까지 배운 제어 구조를 모두 활용하는 간단한 프로그램을 만들어 보겠습니다.
exit()를 입력하거나 Ctrl+D 를 눌러 파이썬 인터프리터를 종료하세요.
LabEx VM 환경에서 WebIDE 를 엽니다.

터미널에서 다음 명령어를 입력하여 ~/project 디렉토리에 number_analyzer.py라는 새 파일을 생성합니다.
touch ~/project/number_analyzer.py
WebIDE 에디터에서 새로 만든 파일을 엽니다.
다음 코드를 복사하여 파일에 붙여넣으세요.
def analyze_numbers():
numbers = []
while True:
user_input = input("Enter a number (or 'done' to finish): ")
if user_input.lower() == 'done':
break
try:
number = float(user_input)
numbers.append(number)
except ValueError:
print("Invalid input. Please enter a number or 'done'.")
if not numbers:
print("No numbers entered.")
return
total = sum(numbers)
average = total / len(numbers)
maximum = max(numbers)
minimum = min(numbers)
print(f"\nAnalysis of {len(numbers)} numbers:")
print(f"Total: {total}")
print(f"Average: {average:.2f}")
print(f"Maximum: {maximum}")
print(f"Minimum: {minimum}")
print("\nNumber distribution:")
for num in numbers:
if num < average:
print(f"{num} is below average")
elif num > average:
print(f"{num} is above average")
else:
print(f"{num} is equal to average")
if __name__ == "__main__":
analyze_numbers()
이 프로그램은 while 루프, for 루프, 조건문 및 예외 처리를 사용하는 방법을 보여줍니다.
파일을 저장하고 (자동 저장이 활성화되어 있습니다) 터미널에서 다음 명령어로 실행하세요.
python ~/project/number_analyzer.py
메시지가 나타나면 몇 개의 숫자를 입력하고, 마지막에 'done'을 입력하여 분석 결과를 확인하세요. 다음과 같은 출력을 볼 수 있습니다.
Enter a number (or 'done' to finish): 10
Enter a number (or 'done' to finish): 20
Enter a number (or 'done' to finish): 30
Enter a number (or 'done' to finish): 40
Enter a number (or 'done' to finish): done
Analysis of 4 numbers:
Total: 100.0
Average: 25.00
Maximum: 40.0
Minimum: 10.0
Number distribution:
10.0 is below average
20.0 is below average
30.0 is above average
40.0 is above average
데이터 입력 중에 실수했다면 프로그램을 다시 실행하면 됩니다. 다양한 입력값을 넣어보며 파이썬 스크립트를 반복해서 실행해 보는 좋은 기회입니다.
요약
이 실습에서는 파이썬의 기본 제어 구조인 조건문 (if-else), for 루프, while 루프를 살펴보았습니다. 프로그램의 흐름을 제어하고, 조건에 따라 의사결정을 내리며, 데이터 시퀀스를 반복 처리하는 방법을 배웠습니다. 또한 중첩 루프와 break, continue 와 같은 루프 제어문을 사용하는 연습도 병행했습니다.
이러한 제어 구조는 파이썬 프로그래밍의 뼈대를 이루며, 이를 통해 더욱 복잡하고 동적인 프로그램을 만들 수 있습니다. 우리는 이러한 개념들을 결합하여 사용자가 입력한 숫자 집합을 분석하는 유용한 프로그램을 직접 만들어 보았습니다.
파이썬 학습을 계속해 나가면서 이러한 제어 구조가 다양한 프로그래밍 문제를 해결하는 데 필수적이라는 것을 알게 될 것입니다. 이해를 돕기 위해 다양한 조합과 사례를 실험하며 정기적으로 이러한 개념들을 연습해 보세요.



