반복문은 프로그래밍에서 같은 코드를 여러 번 실행하기 위해 사용됩니다.
반복문의 기본 이해
반복문이란?
반복문은 프로그래밍에서 동일하거나 유사한 작업을 반복해서 수행합니다. 이코드를 사용하여 코드의 재사용성, 효율성을 높이는 작업입니다. 주로 for문이나 while문을 사용하고, 상황에 따라 처리 합니다.
반복문의 필요성
반복문은 동일 작업의 반복 수행으로 코드 간결화, 유지 보수 용이성 및 실행 효율 향상에 필수적 입니다.
for문 기초
for 문의 기본 구조
for 문은 주어진 조건에 따라 반복적으로 코드 블록을 실행하는 데 사용됩니다. 파이썬에서 for문의 기본 구조는 다음과 같습니다.
for 변수 in 반복가능객체:
# 실행할 코드
range() 사용하기
range() 함수는 지정된 시작값과 끝값 사이의 숫자 시퀸스를 생성, for 문과 함께 사용시 특정 횟수만큼 반복 실행합니다.
for i in range(10):
print(i)
#출력
0
1
2
3
4
5
6
7
8
9
for z in range(2, 10):
print(z)
#출력
2
3
4
5
6
7
8
9
for j in range(2, 10, 3):
print(j)
#출력
2
5
8
참고: range() 기본형태: range(시작, 끝, 증가량)
문자열과 for문
문자열의 각 문자를 순회하며 작업을 수행합니다.
for letter in "python":
print(letter)
#출력
p
y
t
h
o
n
리스트와 for문
리스트의 각 요소를 순회하며 작업을 수행
list =["자동차", "바나나", "포도"]
for fruits in list:
print(fruits)
#출력
자동차
바나나
포도
튜플과 for문
튜플의 각 요소를 순회하며 작업을 수행할 수 있습니다.
colors = ("red", "green", "blue")
for color in colors:
print(color)
#출력
red
green
blue
딕셔너리과 for문
딕셔너리는 키(key)와 값(value)의 쌍으로 이루어진 컬렉션입니다. {} 중괄호를 사용하거나, dict() 생성자로 생성할 수 있습니다. 딕셔너리는 데이터에 순서가 없으며, 키를 통해 빠르게 접근할 수 있습니다.
딕셔너리의 기본구조
{키: 값}의 형태로 이루어졌고, 여기서 키는 딕셔너리 내에서 유일해야하고, 값은 어떤 데이터 타입도 될수 있습니다.
my_dict = {
"name": "박성열",
"age": 19,
}
print(my_dict)
#출력
{'name': '박성열', 'age': 19}
딕셔너리의 키(key)와 값(value) 반복하기
딕셔너리에서 키와 값을 반복하기 위해 for 문과 함께 items(), keys(), values() 메소드를 사용할 수 있습니다.
- items() 메소드는 딕셔너리의 키와 값을 쌍으로 튜플로 변환합니다.
- key() 메소드는 딕셔너리의 키를 반환합니다.
- values() 매소드는 딕셔너리의 값을 반환합니다
my_dict = {
"name": "박성열",
"age": 19,
}
for key, value in my_dict.items():
print(f"{key}:{value}")
#출력
name:박성열
age:19
for only_key in my_dict.keys():
print(only_key)
#출력
name
age
for only_value in my_dict.values():
print(only_value)
#출력
박성열
19
세트와 for문
세트(set)는 파이썬의 기본 자료형 중에 하나고, 중복된 값을 허용하지 않고 순서가 없는 컬렉션입니다. 이러한 특성 때문에
중복 제거하거나 다양한 집합연산(합집합, 교집합, 차집합 등)을 수행합니다.
세트의 특징
- 중복을 허용하지 않음
- 순서가 없음, 인덱스로 세트 요소를 접근 불가
세트와 반복문 사용
for문으로 세트의 각요소에 접근하고, 세트는 순서가없기 때문에 순서 없이 출력합니다.
# 세트 생성
my_set = {1, 2, 3, 4, 5}
# for 문을 사용하여 세트의 각 요소에 접근하고 출력
for item in my_set:
print(item)
while 문
while 문의 기본 구조
while 문은 주어진 조건이 참(True)인 동안, 내부의 코드 블록을 반복 실행하는 구조입니다. 기본구조는 다음과 같습니다.
while 조건:
#조건이 참일 때 실행할 코드
break 문
무한 루프는 조건이 항상 참인 경우 발생합니다. 특정 조건에서 반복을 종료하고자 할 때는 break문을 사용하여 루프를 안전하게 종료합니다.
while True: # 무한 루프
사용자_입력 = input("종료하려면 '종료'를 입력하세요: ")
if 사용자_입력 == "종료":
print("루프를 종료합니다.")
break
continue 문
반복문 내부에서 특정한 조건을 만족할 때 나머지 코드를 건너뛰고 다음 반복으로 넘어가고자 할 때는 continue 문을 사용할 수 있습니다.
count = 0
while count < 10:
count += 1
if count % 2 == 0: # count가 짝수일 때
continue # 다음 반복으로 넘어감
print("홀수 count:", count)
반복문과 조건문의 결합
조건문 내부의 반복문
조건문 내부에 반복문은 특정 조건이 참(True)일 때만 반복문이 실행합니다.
numbers = [1, 2, 3, 4, 5]
condition = True # 조건을 나타내는 변수
if condition:
for number in numbers:
print(number)
위에 코드는 condition 변수가 True일 때만 numbers 리스트의 각 요소를 출력하는 반복문이 실행됩니다.
반복문 내부의 조건문
반복되는 각 단계에서 조건을 검사하여 특정 조건에 따라 다르게 처리할 수 있습니다.
numbers = [1, 2, 3, 4, 5]
for number in numbers:
if number % 2 == 0: # 짝수 조건 검사
print(number, "는 짝수입니다.")
위에 코드는 numbers 리스트의 각 요소에 대해 반복문을 실행하며, 조건문을 통해 해당 요소가 짝수일 때만 출력합니다.
리스트 컴프리헨션(List Comprehension)
파이썬에서 리스트를 생성하기 위한 간결한 방법을 제공합니다. 반복문과 조건문을 한줄로 코드로 표현할 수 있어서 코드를 읽기 쉽고, 짧게 만들 수 있습니다.
리스트 컴프리헨션의 기본 구조
[표현식 for 항목 in 반복가능한 객체]
print([x*2 for x in range(5)])
# 출력: [0, 2, 4, 6, 8]
조건이 포함한 리스트 컴프리헨션
리스트 컴프리헨션에는 if 조건문을 추가하여 특정 조건을 만족하는 요소만 리스트 생성할 수 있습니다
[표현식 for 항목 in 반복가능객체 if 조건]
print([x * 2 for x in range(5) if x % 2 == 0])
# 출력: [0, 4, 8]
중첩 반복문을 사용한 리스트 컴프리헨션
리스트 컴프리헨션에 중첩 반복문도 사용할 수 있습니다.
[표현식 for 항목1 in 반복가능객체1 for 항목2 in 반복가능객체2]
colors = ["빨강", "파랑", "녹색"]
items = ["자동차", "집", "나무"]
combinations = [(color, item) for color in colors for item in items]
print(combinations)
중첩된 반복문
중첩 반복문이란 하나의 반복문 내부에 다른 반복문이 있는 구조를 말합니다. 이 구조는 다차원 배열이나 리스트를 순회하거나, 특정 작업을 여러 차원에 걸쳐 반복적으로 수행해야 할 때 유용합니다.
중첩 반복문의 기본구조
중첩 반복문 다음과 같은 형태입니다.
for 반복자1 in 반복할 객체1:
#외부 반복문의 작업
for 반복자2 in 반복할 객체2:
#내부 반복문의 작업
예제 1)
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for row in matrix:
for element in row:
print(element, end=' ')
print() # 새 줄로 이동
예제 2)
for i in range(1, 10): # 1단부터 9단까지
for j in range(1, 10): # 각 단에서 1부터 9까지 곱하기
print(f"{i} * {j} = {i*j}", end='\t') # 결과 출력
print() # 단이 바뀔 때마다 새 줄로 이동