2025.01.19 - [🐍 Python/🐍 기초 문법] - [기초문법 4강] 조건문 (if, elif, else) 완벽 가이드
[기초문법 4강] 조건문 (if, elif, else) 완벽 가이드
2025.01.18 - [🐍 Python/🐍 기초 문법] - [기초문법 3강] 파이썬 연산자와 표현식, 기본부터 실습까지 [기초문법 3강] 파이썬 연산자와 표현식, 기본부터 실습까지2025.01.17 - [🐍 Python/🐍 기초 문법] -
boohoday.com
- 1. 반복문의 개념과 필요성
- 2. for 문 기본 구조와 활용
- 3. while 문 기본 구조와 활용
- 4. 반복문과 함께 사용하는 제어문
- 5. 중첩 반복문 (Nested Loops)
- 6. 리스트 컴프리헨션과 반복문
- 7. 반복문을 활용한 실전 예제
1. 반복문의 개념과 필요성
반복문의 역할
반복문(Loop)은 동일한 코드 블록을 여러 번 실행할 때 사용됩니다.
만약 반복문이 없다면, 동일한 동작을 수행하는 코드를 여러 번 작성해야 하며, 유지보수가 어려워집니다.
반복문을 사용하면 코드를 단순화하고 가독성을 높일 수 있으며, 프로그램의 효율성을 향상시킬 수 있습니다.
반복문이 없는 코드 vs 반복문을 활용한 코드
예제 1: 반복문이 없는 경우 (비효율적인 코드)
print("Hello, Python!")
print("Hello, Python!")
print("Hello, Python!")
print("Hello, Python!")
print("Hello, Python!")
예제 2: 반복문을 사용한 경우 (효율적인 코드)
for _ in range(5):
print("Hello, Python!")
위 예제처럼 반복문을 사용하면 코드를 줄이고 유지보수를 쉽게 만들 수 있습니다.
반복문이 필요한 이유
- 코드의 중복을 줄이고 가독성을 향상
- 데이터를 반복적으로 처리 (예: 리스트, 파일, 웹 크롤링 등)
- 사용자 입력을 반복적으로 받을 때 유용
- 게임, 시뮬레이션, 인공지능 모델 등에서 필수적으로 사용
2. for 문 기본 구조와 활용
for 문이란?
for 문은 반복 횟수가 정해진 경우에 사용됩니다. 리스트, 튜플, 문자열 등의 요소를 하나씩 순회하거나, 특정 범위의 숫자를 반복할 때 유용합니다.
for 문의 기본 구조
for 변수 in 반복할_데이터:
실행할 코드
예제: 리스트의 요소 출력하기
fruits = ["사과", "바나나", "체리"]
for fruit in fruits:
print(fruit)
출력:
사과
바나나
체리
range() 함수와 함께 사용하기
range() 함수는 일정한 범위의 숫자를 생성하는 함수로, for 문과 함께 자주 사용됩니다.
예제: 1부터 5까지 출력하기
for i in range(1, 6):
print(i)
출력:
1
2
3
4
5
리스트, 튜플, 문자열과 함께 사용
문자열 반복
for char in "Python":
print(char)
출력:
P
y
t
h
o
n
튜플 반복
colors = ("빨강", "초록", "파랑")
for color in colors:
print(color)
enumerate()를 활용한 인덱스 출력
enumerate() 함수를 사용하면 리스트 요소와 함께 인덱스를 가져올 수 있습니다.
예제: 과일 리스트와 인덱스 출력
fruits = ["사과", "바나나", "체리"]
for index, fruit in enumerate(fruits):
print(index, fruit)
출력:
0 사과
1 바나나
2 체리
3. while 문 기본 구조와 활용
while 문이란?
while 문은 조건이 참(True)인 동안 반복 실행하는 반복문입니다. 특정 조건이 만족될 때까지 실행되며, 종료 조건을 명확히 설정해야 합니다.
while 문의 기본 구조
while 조건:
실행할 코드
while 문을 활용한 예제
예제: 1부터 5까지 출력하기
num = 1
while num <= 5:
print(num)
num += 1
출력:
1
2
3
4
5
무한 루프와 종료 방법
while True를 사용하면 무한 루프를 만들 수 있습니다. 이 경우 break 문을 사용하여 특정 조건에서 반복을 종료해야 합니다.
예제: 특정 입력을 받을 때까지 반복
while True:
command = input("종료하려면 'exit'을 입력하세요: ")
if command == "exit":
print("프로그램을 종료합니다.")
break
print(f"입력한 값: {command}")
while 문과 함께 사용하는 제어문
- break: 반복문 즉시 종료
- continue: 현재 반복을 건너뛰고 다음 반복 실행
예제: 짝수만 출력하기
num = 0
while num < 10:
num += 1
if num % 2 != 0:
continue # 홀수는 건너뛰기
print(num)
출력:
2
4
6
8
10
4. 반복문과 함께 사용하는 제어문
제어문의 개념
제어문(Control Statements)은 반복문(for, while)과 함께 사용하여 실행 흐름을 제어하는 기능을 합니다. 주요 제어문으로는 break, continue, else가 있으며, 반복문의 종료, 특정 반복 건너뛰기, 조건 충족 시 실행 등을 처리할 수 있습니다.
break 문
break 문은 반복문을 즉시 종료하는 역할을 합니다.
예제: 사용자가 'exit'을 입력하면 반복 종료
while True:
text = input("종료하려면 'exit' 입력: ")
if text == "exit":
print("반복문을 종료합니다.")
break
print(f"입력한 값: {text}")
출력 (사용자가 'exit' 입력 시 종료):
입력한 값: hello
입력한 값: python
반복문을 종료합니다.
continue 문
continue 문은 현재 반복을 건너뛰고 다음 반복을 실행하도록 합니다.
예제: 홀수만 출력하기
for num in range(1, 10):
if num % 2 == 0:
continue # 짝수는 건너뜀
print(num)
출력:
1
3
5
7
9
else와 함께 사용하는 반복문
for 또는 while 반복문과 함께 else를 사용하면, 반복문이 정상적으로 종료되었을 때 실행되는 코드를 정의할 수 있습니다. (즉, break로 종료되지 않은 경우 실행)
예제: 숫자 찾기
numbers = [1, 3, 5, 7, 9]
for num in numbers:
if num == 4:
print("4를 찾았습니다!")
break
else:
print("4를 리스트에서 찾을 수 없습니다.")
출력:
4를 리스트에서 찾을 수 없습니다.
5. 중첩 반복문 (Nested Loops)
중첩 반복문의 개념
중첩 반복문이란, 반복문 안에 또 다른 반복문을 포함하는 구조를 의미합니다. 이를 활용하면 2차원 리스트, 표 형태의 데이터, 또는 특정 패턴을 출력하는 작업을 수행할 수 있습니다.
중첩 반복문의 기본 구조
for 변수1 in 반복할_데이터1:
for 변수2 in 반복할_데이터2:
실행할 코드
예제: 구구단 출력 (중첩 for문 활용)
# 구구단 출력 프로그램
# 2단부터 9단까지 반복
for i in range(2, 10): # i는 2부터 9까지 반복 (즉, 2단부터 9단까지)
# 각 단에서 1부터 9까지 곱하기
for j in range(1, 10): # j는 1부터 9까지 반복 (각 단의 곱해지는 수)
print(f"{i} x {j} = {i*j}", end="\t") # i * j의 결과를 출력, 탭 간격을 추가하여 가로 정렬
print() # 각 단이 끝날 때 줄 바꿈하여 보기 좋게 정리
출력:
2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 ... 2 x 9 = 18
3 x 1 = 3 3 x 2 = 6 3 x 3 = 9 ... 3 x 9 = 27
...
9 x 1 = 9 9 x 2 = 18 ... 9 x 9 = 81
중첩 while문 활용하기
예제: 별(*) 피라미드 출력
# 별(*) 피라미드 출력 프로그램
# 출력할 줄(row)의 개수 설정
rows = 5 # 총 5줄을 출력
row = 1 # 시작 행 (1부터 시작)
# while 문을 사용하여 행(row) 반복
while row <= rows: # row가 5 이하일 때까지 반복
col = 1 # 각 행에서 별(*)을 출력할 열(col) 설정
while col <= row: # 현재 row 값만큼 별을 출력
print("*", end=" ") # 별을 출력, end=" "를 사용하여 가로로 출력
col += 1 # col 값을 1 증가시켜 다음 별 출력 준비
print() # 현재 행이 끝나면 줄 바꿈
row += 1 # 다음 행으로 이동
출력:
*
* *
* * *
* * * *
* * * * *
중첩 반복문 사용 시 주의할 점
- 들여쓰기 주의: 파이썬에서는 들여쓰기가 코드의 구조를 결정하므로, 중첩 반복문 사용 시 가독성을 유지해야 합니다.
- 불필요한 중첩 피하기: 중첩 반복문을 과도하게 사용하면 성능이 저하될 수 있으므로, 리스트 컴프리헨션 등 다른 방법도 고려해야 합니다.
- break와 continue 활용: 중첩 반복문에서 특정 조건을 만족할 때 반복을 빠져나오거나 다음 반복을 건너뛰는 방법을 사용하면 실행 속도를 개선할 수 있습니다.
6. 리스트 컴프리헨션과 반복문
리스트 컴프리헨션이란?
리스트 컴프리헨션(List Comprehension)은 반복문을 이용하여 리스트를 간결하게 생성하는 방법입니다. 기존의 for 문을 사용한 리스트 생성 방식보다 코드가 짧고 가독성이 좋다는 장점이 있습니다.
기본 구조
[표현식 for 변수 in 반복할_데이터]
예제: 기존 for 문과 리스트 컴프리헨션 비교
# 기존 for 문을 사용하여 리스트 생성
numbers = [] # 빈 리스트 선언
# 1부터 5까지 반복하면서 각 숫자에 2를 곱하여 리스트에 추가
for i in range(1, 6): # i는 1부터 5까지 반복
numbers.append(i * 2) # i * 2의 결과를 리스트에 추가
print(numbers) # [2, 4, 6, 8, 10] 출력
# 리스트 컴프리헨션을 사용하여 같은 결과를 더 간결하게 생성
numbers_comp = [i * 2 for i in range(1, 6)]
# i에 2를 곱한 값을 리스트에 직접 추가 (한 줄로 표현)
print(numbers_comp) # [2, 4, 6, 8, 10] 출력
출력:
[2, 4, 6, 8, 10]
[2, 4, 6, 8, 10]
조건문과 함께 사용하는 리스트 컴프리헨션
리스트 컴프리헨션에서는 if 조건문을 함께 사용하여 특정 조건을 만족하는 요소만 추가할 수 있습니다.
예제: 짝수만 리스트에 저장
# 리스트 컴프리헨션을 사용하여 짝수만 포함된 리스트 생성
even_numbers = [i for i in range(1, 11) if i % 2 == 0]
# 1부터 10까지 반복하면서 i가 2로 나누어 떨어지는(짝수) 경우만 리스트에 추가
print(even_numbers) # [2, 4, 6, 8, 10] 출력
출력:
[2, 4, 6, 8, 10]
중첩 반복문과 리스트 컴프리헨션
리스트 컴프리헨션에서는 **중첩된 반복문(Nested Loops)**을 사용할 수도 있습니다.
예제: 2차원 리스트 평탄화 (Flattening a List)
# 2차원 리스트 (행렬) 선언
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 리스트 컴프리헨션을 사용하여 2차원 리스트를 1차원 리스트로 변환
flat_list = [num for row in matrix for num in row]
# 각 행(row)을 순회하면서, 해당 행(row) 내의 요소(num)를 하나씩 추가
print(flat_list) # [1, 2, 3, 4, 5, 6, 7, 8, 9] 출력
출력:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
리스트 컴프리헨션 사용 시 주의할 점
- 너무 복잡한 표현은 지양하기: 코드가 지나치게 길어지면 오히려 가독성이 떨어질 수 있습니다.
- 메모리 사용량 고려하기: 큰 데이터를 한꺼번에 생성하는 경우 메모리 사용량이 증가할 수 있습니다.
- 다른 컬렉션에도 적용 가능: 튜플, 딕셔너리 컴프리헨션도 활용할 수 있습니다.
예제: 딕셔너리 컴프리헨션 사용
# 딕셔너리 컴프리헨션을 사용하여 숫자와 그 제곱 값을 저장
squares = {x: x**2 for x in range(1, 6)}
# 1부터 5까지 숫자 x를 반복하면서, key는 x, value는 x의 제곱(x**2)으로 설정
print(squares) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25} 출력
출력:
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
7. 반복문을 활용한 실전 예제
예제 1: 특정 조건을 만족하는 숫자 찾기
사용자로부터 숫자를 입력받고, 해당 숫자가 리스트에 포함되어 있는지 확인하는 프로그램을 만들어 보겠습니다.
# 정해진 숫자 리스트
numbers = [10, 20, 30, 40, 50] # 사용자가 입력할 숫자와 비교할 리스트
# 사용자로부터 숫자 입력받기
user_input = int(input("숫자를 입력하세요: ")) # 입력받은 값을 정수(int)로 변환
# 입력한 숫자가 리스트에 포함되어 있는지 확인
if user_input in numbers: # user_input 값이 numbers 리스트 안에 존재하는지 검사
print(f"{user_input}은 리스트에 포함되어 있습니다.") # 포함된 경우 출력
else:
print(f"{user_input}은 리스트에 없습니다.") # 포함되지 않은 경우 출력
출력 예시 (사용자가 20 입력 시):
20은 리스트에 포함되어 있습니다.
예제 2: 구구단 출력 프로그램
반복문을 활용하여 2단부터 9단까지 구구단을 출력하는 프로그램을 작성해 봅니다.
# 구구단 출력 프로그램
# 2단부터 9단까지 반복
for i in range(2, 10): # i는 2부터 9까지 반복 (즉, 2단부터 9단까지)
print(f"{i}단") # 현재 단을 출력
# 각 단에서 1부터 9까지 곱하기
for j in range(1, 10): # j는 1부터 9까지 반복 (각 단의 곱해지는 수)
print(f"{i} x {j} = {i * j}") # i * j의 결과를 출력
print() # 각 단이 끝날 때 줄 바꿈하여 보기 좋게 정리
출력 예시:
2단
2 x 1 = 2
2 x 2 = 4
...
9 x 9 = 81
예제 3: 사용자 입력 기반 숫자 맞추기 게임
반복문을 활용하여 랜덤 숫자를 맞추는 간단한 게임을 만들어 보겠습니다.
# 랜덤 숫자 맞추기 게임
import random # 랜덤 숫자를 생성하기 위한 random 모듈 임포트
# 1부터 100 사이의 랜덤 숫자 생성
secret_number = random.randint(1, 100) # 컴퓨터가 랜덤으로 숫자를 선택
tries = 0 # 사용자의 시도 횟수를 기록하는 변수
# 무한 반복 (정답을 맞출 때까지 계속 실행)
while True:
# 사용자로부터 숫자 입력받기
user_guess = int(input("숫자를 입력하세요 (1-100): "))
tries += 1 # 사용자가 입력할 때마다 시도 횟수 증가
# 사용자가 입력한 숫자가 정답보다 작은 경우
if user_guess < secret_number:
print("더 큰 숫자를 입력하세요.") # 힌트 제공
# 사용자가 입력한 숫자가 정답보다 큰 경우
elif user_guess > secret_number:
print("더 작은 숫자를 입력하세요.") # 힌트 제공
# 사용자가 정답을 맞춘 경우
else:
print(f"정답입니다! {tries}번 만에 맞추셨습니다.") # 정답 메시지 출력
break # while 반복문 종료
출력 예시 (사용자가 정답을 맞출 때까지):
더 큰 숫자를 입력하세요.
더 작은 숫자를 입력하세요.
정답입니다! 7번 만에 맞추셨습니다.
반복문을 활용한 실전 활용 팁
- 데이터 필터링: 특정 조건을 만족하는 데이터만 추출할 때 사용
- 파일 처리: 텍스트 파일에서 특정 단어 찾기, 로그 분석 등
- 웹 크롤링: 여러 페이지를 반복 탐색하여 데이터 수집
- 자동화 스크립트: 반복적인 작업을 자동으로 수행하는 스크립트 개발
'🐍 Python > 🐍 기초 문법' 카테고리의 다른 글
파이썬 기초 : 세트(Set) (0) | 2025.01.19 |
---|---|
파이썬 기초 : 딕셔너리(Dictionary) (0) | 2025.01.19 |
[기초문법 4강] 조건문 (if, elif, else) 완벽 가이드 (0) | 2025.01.19 |
[기초문법 3강] 파이썬 연산자와 표현식, 기본부터 실습까지 (0) | 2025.01.18 |
[기초문법 2강] 파이썬 변수와 데이터 타입, 기초부터 제대로 배우기 (0) | 2025.01.17 |