1. 반복문
반복문은 동일한 작업을 여러 번 실행하기 위해 사용되는 제어 구조입니다. 주로 for 문과 while 문이 사용되며, 각각의 반복문은 다른 상황에 적합한 방식으로 사용됩니다.
2. while 문
while 문은 특정 조건이 참인 동안 반복적으로 코드 블록을 실행하는 제어 구조입니다. while 문은 주어진 조건이 참인 동안 반복적으로 코드를 실행하며, 조건이 거짓이 되면 반복을 멈춥니다.
while 조건:
# 조건이 참인 동안 실행될 코드
조건은 평가 결과가 참(True) 또는 거짓(False)이 될 수 있는 표현식입니다. 조건이 참일 때 코드 블록이 실행되며, 코드 블록이 실행된 후에 다시 조건을 검사합니다. 조건이 여전히 참이라면 코드 블록을 다시 실행하고, 이 과정을 조건이 거짓이 될 때까지 반복합니다.
while True:
print('Hello Python') # 무한루프
while False:
print('Hello Python')
i = 1
while i <= 5:
print('Hello Python')
i += 1
# 1부터 10까지의 총합
i = 1
sum = 0
while i <= 10:
sum += i
i += 1
print(f'1부터 10까지의 합: {sum}')
# 1부터 100까지 짝수의 합
i = 1
sum = 0
while i <= 100:
if i % 2 == 0:
sum += i
i += 1
print(f'1부터 100까지의 짝수의 합: {sum}')
# 원하는 구구단을 입력받아 해당 단의 구구단을 출력
dan = int(input('원하는 단을 입력하세요: '))
print(f'{dan} 단')
i = 1
while i <= 9:
print(f'{dan} * {i} = {dan * i}')
i += 1
3. for 문
for 문은 시퀀스(리스트, 튜플, 문자열 등)의 각 항목에 대해 반복 작업을 수행하는 반복문입니다. for 문은 주로 "지정된 범위 내에서 반복"할 때 사용됩니다. 이것은 반복할 요소들이 미리 정해져 있는 경우에 유용합니다.
# 요소: 반복할 시퀀스의 각 항목이 for 문의 실행 도중에 할당되는 변수
for 요소 in 시퀀스:
# 요소에 대한 작업 수행
for s in "Hello":
print(s)
list1 = [10, 20, 30, 40]
for li in list1:
print(li)
4. range() 함수
range() 함수는 파이썬에서 순차적인 정수의 시퀀스를 생성하는 데 사용되는 내장 함수입니다. 주로 for 문과 함께 사용되며, 일정한 범위 내에서 반복 작업을 수행할 때 유용하게 활용됩니다. range() 함수의 결과로 생성되는 순차적인 정수 시퀀스는 실제로 메모리에 저장되지 않고 필요할 때마다 생성되므로, 큰 범위의 반복문에도 효율적으로 사용할 수 있습니다.
range([start], stop, [step])
start (선택 사항): 순차적인 범위의 시작 값을 지정합니다. 기본값은 0입니다.
stop: 순차적인 범위의 끝 값을 지정합니다. 생성된 시퀀스는 stop 값 직전까지의 정수를 포함합니다.
step (선택 사항): 순차적인 값을 증가시키는 간격을 지정합니다. 기본값은 1입니다.
range() 함수의 반환값은 range 객체로, 이 객체는 실제 정수 시퀀스를 저장하지 않고 범위 정보만 가지고 있습니다. 따라서 필요한 정수 시퀀스는 실제 사용 시에 생성됩니다.
num = range(0, 10, 1)
print(num)
for i in num:
print(i, end=' ')
for i in range(0, 10, 1):
print(i, end=' ')
for i in range(0, 10):
print(i, end=' ')
for i in range(10):
print(i, end=' ')
for i in range(1, 10, 2):
print(i, end=' ')
# for 문을 이용하여 1부터 100까지의 짝수의 총합 구하기
sum = 0
for i in range(0, 101, 2):
sum += i
print(f'1부터 100까지 짝수의 총합: {sum}')
5. enumerate() 함수
enumerate() 함수는 파이썬에서 반복문을 사용할 때 인덱스와 값을 함께 가져오기 위해 사용되는 내장 함수입니다. 주로 for 문과 함께 사용되며, 반복문 내에서 순서를 추적하면서 값과 해당 값의 인덱스를 함께 사용할 때 유용합니다. enumerate() 함수는 (인덱스, 값)의 튜플을 반환하는 이터레이터(iterator)를 생성합니다.
enumerate(iterable, [start=0])
Iterable(반복 가능 객체): 리스트, 튜플, 딕셔너리, 문자열과 같은 컬렉션 자료형은 반복 가능한 객체로, 이터레이터를 생성할 수 있습니다.
Iterator(이터레이터): 이터러블 객체에서 iter() 함수를 호출해 얻을 수 있으며, next() 함수를 사용해 요소를 하나씩 순차적으로 접근합니다.
for e in enumerate('hello', 0):
print(e)
for e in enumerate('hello', 2):
print(e)
list1 = [10, 20, 30, 40]
for e in enumerate(list1):
print(e)
list1 = [10, 20, 30, 40]
# (0, 10)
# i, v = (0, 10)
for i, v in enumerate(list1):
print(f'인덱스:{i}, 값:{v}')
6. zip() 함수
zip() 함수는 파이썬에서 여러 개의 반복 가능한(iterable) 객체를 병렬적으로 묶어주는 내장 함수입니다. 각 객체로부터 순서대로 하나의 요소씩 가져와 튜플로 묶어주는 이터레이터를 반환합니다. 주로 여러 개의 리스트나 튜플을 병렬적으로 처리하고자 할 때 사용됩니다.
zip(iterable1, iterable2, ...)
li1 = [10, 20, 30]
li2 = ['apple', 'banana', 'orange']
for i in range(0, 3):
print(li1[i], li2[i])
li1 = [10, 20, 30]
li2 = ['apple', 'banana', 'orange']
for i in range(len(li1)):
print((li1[i], li2[i]))
li1 = [10, 20, 30, 40, 50]
li2 = ['apple', 'banana', 'orange']
for i in range(len(li1)):
print(li1[i], li2[i]) # IndexError: list index out of range
li1 = [10, 20, 30]
li2 = ['apple', 'banana', 'orange']
for l1, l2 in zip(li1, li2):
print(l1, l2)
li1 = [10, 20, 30]
li2 = ['apple', 'banana', 'orange']
for li in zip(li1, li2):
print(li)
li1 = [10, 20, 30, 40, 50]
li2 = ['apple', 'banana', 'orange']
for l1, l2 in zip(li1, li2):
print(l1, l2)
7. 중첩 반복문
파이썬에서 중첩된 반복문은 하나의 반복문 안에 다른 반복문이 포함된 구조를 의미합니다. 중첩 반복문은 외부 반복문의 각 반복마다 내부 반복문이 모두 실행되는 방식으로 작동합니다. 이를 통해 다차원의 데이터를 처리하거나 복잡한 작업을 수행할 수 있습니다.
for 외부_변수 in 외부_시퀀스:
for 내부_변수 in 내부_시퀀스:
# 내부 반복문 코드
# 외부 반복문 코드
for i in range(1, 4):
print(f'😎 i: {i}')
for j in range(1, 4):
print(f' 😍 i: {j}')
# '🎃'를 이용하여 아래와 같은 도형을 만들어보자.
'''
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
'''
for i in range(5):
for j in range(5):
print('🎃', end=' ')
print()
'''
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃
🎃 🎃 🎃
🎃 🎃
🎃
'''
for i in range(5):
for j in range(i, 5): # range(0, 5), range(0, 1)
print('🎃', end=' ')
print()
'''
🎃
🎃 🎃
🎃 🎃 🎃
🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
'''
for i in range(5):
for j in range(0, i+1):
print('🎃', end=' ')
print()
# 2단부터 9단까지 구구단을 출력하는 프로그램을 작성
# for 문
for i in range(2, 10):
print(f'{i}단')
for j in range(1, 10):
print(f'{i} * {j} = {i*j}')
print()
# while 문
i = 2
j = 1
while i <= 9:
print(f'{i}단')
while j <= 9:
print(f'{i} * {j} = {i*j}')
j += 1
i += 1
j = 1
print()